Open v-wenyuxu opened 1 year ago
Tagging subscribers to this area: @dotnet/area-system-io See info in area-owners.md if you want to be subscribed.
Author: | v-wenyuxu |
---|---|
Assignees: | - |
Labels: | `arch-arm64`, `area-System.IO`, `os-windows`, `JitStress` |
Milestone: | - |
Hi @v-wenyuxu thanks, please put test name not url in the title.
FWIW: There are other tests using alternate data stream paths and they didn't fail. Only CopyFileEx with overwrite: true fails. I don't know what JitStress may be doing that affects this specific scenario.
Failed in https://dev.azure.com/dnceng-public/public/_build/results?buildId=250159&view=results again (in the zapdisable scenario, so there is no special JIT modes enabled there).
Failed again in: runtime-coreclr libraries-jitstress 20230519.1
Failed test:
net8.0-windows-Release-arm64-CoreCLR_checked-zapdisable-Windows.11.Arm64.Open
- System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(defaultStream: \"::$DATA\", alternateStream: \":bar:$DATA\")
- System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(defaultStream: \"::$DATA\", alternateStream: \":bar\")
- System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(defaultStream: \"\", alternateStream: \":bar:$DATA\")
- System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(defaultStream: \"\", alternateStream: \":bar\")
Error message:
System.IO.IOException : The parameter is incorrect. : 'C:\h\w\BDDE0A0A\t#File_Copy_str_str_b_snfjrv1o.lza\WindowsAlternateDataStreamOverwrite_330_xpdes8ds\WindowsAlternateDataStreamOverwrite_331_2j4b3v36:bar:$DATA'
Stack trace
at System.IO.FileSystem.CopyFile(String sourceFullPath, String destFullPath, Boolean overwrite) in /_/src/libraries/System.Private.CoreLib/src/System/IO/FileSystem.Windows.cs:line 84
at System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(String defaultStream, String alternateStream) in /_/src/libraries/System.IO.FileSystem/tests/File/Copy.cs:line 346
at InvokeStub_File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(Object, Object, IntPtr*)
at System.Reflection.MethodInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
The error The parameter is incorrect
usually means ERROR_INVALID_PARAMETER
which means that and invalid value was passed to sys-call.
The logic around the sys-call seems very simple:
If we had a bug in System.IO, we would get it almost always. And it the provided logs I can see that it's throw on the second call to this sys-call (the first worked fine):
Since it's specific to Windows arm64, I suspect that it's either a marshalling or runtime bug. @jkotas what do you think?
Tagging subscribers to this area: @dotnet/interop-contrib See info in area-owners.md if you want to be subscribed.
Author: | v-wenyuxu |
---|---|
Assignees: | - |
Labels: | `arch-arm64`, `area-System.Runtime.InteropServices`, `os-windows`, `JitStress`, `blocking-clean-ci-optional` |
Milestone: | Future |
And it the provided logs I can see that it's throw on the second call to this sys-call (the first worked fine): Since it's specific to Windows arm64, I suspect that it's either a marshalling or runtime bug.
@adamsitnik This is unlikely to an interop issue. I disagree with your analysis based on the above (2) statements.
Since all interop stub logic is idempotent, the first (1) and all subsequent operations run the same code. It is unlikely therefore that if the first succeeds and the second fails it has anything to do with the interop stub itself.
The second doesn't indicate anything to do with marshalling since interop generates IL and is platform agnostic - other than pointer size, in all cases I can think of. Also, since this is passing on the first run the IL and all interop code is identical across runs.
It is entirely possible there is a codegen issue, which we should consider. However, this is File I/O and based on the path in the failure it is entirely possible the Win32 File API is doing something the test isn't handling.
'C:\h\w\BDDE0A0A\t#File_Copy_str_str_b_snfjrv1o.lza\WindowsAlternateDataStreamOverwrite_330_xpdes8ds\WindowsAlternateDataStreamOverwrite_331_2j4b3v36:bar:$DATA'
In summary I don't think there is enough data to warrant sending this over to the interop team or any other runtime team at present. The owner of the File IO APIs should be able to run this on a Windows ARM64 machine and see if they can reproduce it and perhaps collect a bit more information.
Ugh. This is a JIT stress issue. Nevermind, the codegen team needs to take a look.
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch See info in area-owners.md if you want to be subscribed.
Author: | v-wenyuxu |
---|---|
Assignees: | - |
Labels: | `arch-arm64`, `os-windows`, `JitStress`, `area-CodeGen-coreclr`, `blocking-clean-ci-optional` |
Milestone: | Future |
@dotnet/jit-contrib Is there anything the owner of this test could collect that would help with the investigation?
As I pointed out above the failure was in the jitminopts scenario and the recent one is in zapdisable. There's no abnormal jit stress enabled in these scenarios; the first one is like running debug codegen, the second one is like running without R2R. Is there any reason to believe this is a codegen issue? Have we tried reproducing the issue with the paths involved?
As I pointed out above the failure was in the zapdisable stress mode and the recent one is in jitminopts.
Ah. I missed that this was reproducing on a different leg as well. Apologies.
Is there any reason to believe this is a codegen issue?
Not from my end. I naively set it to that since it was marked "JitStress".
Have we tried reproducing the issue with the paths involved?
+1
/cc @adamsitnik
Another data point: it frequently fails in runtime as part of NAOT runs too: https://runfo.azurewebsites.net/search/tests/?q=started%3A%7E7+definition%3Aruntime+name%3ASystem.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite
@jkotas what do you think?
Based on the data presented so far, it is most likely Windows Arm64 specific OS issues. area-System.IO owners should investigate it and file a bug against the OS team as appropriate.
Also, I would check for potential machine setup issue. It is possible that the file system is misconfigured on some of the Windows Helix machines that makes the test fail.
Tagging subscribers to this area: @dotnet/area-system-io See info in area-owners.md if you want to be subscribed.
Author: | v-wenyuxu |
---|---|
Assignees: | - |
Labels: | `arch-arm64`, `area-System.IO`, `os-windows`, `area-CodeGen-coreclr`, `blocking-clean-ci-optional` |
Milestone: | Future |
Thank you all for your feedback, I am going to try to repro it on my Windows x64 and arm64 machines.
@Jozkee @adamsitnik This issue is marked as both "blocking-clean-ci-optional" and "Milestone: Future". That doesn't make sense. If it's actually blocking, it should be in the current release milestone. If it's not blocking, remove the blocking label.
This is failing in Native AOT now as well. Since jitstress saw this first it would be good if someone from JIT could take a look.
@agocke Do you have any new evidence to suggest this is a JIT issue? I do not believe this is a JIT issue -- please see the comments above for context.
Added this to the 9.0.0 milestone because of the frequency
Another set of failures here: https://dev.azure.com/dnceng-public/public/_build/results?buildId=487061&view=ms.vss-test-web.build-test-results-tab
I adjusted the KnownBuildError pattern. It was not catching many hits.
I found this in a 7.0 PR: https://github.com/dotnet/runtime/pull/98223
Build windows arm64 Release NativeAOT
[FAIL] System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(defaultStream: "", alternateStream: ":bar")
System.IO.IOException : The parameter is incorrect. : 'C:\h\w\9BDA087A\t\#File_Copy_str_str_b_uhztkjkv.b14\WindowsAlternateDataStreamOverwrite_330_3ah48qd5\WindowsAlternateDataStreamOverwrite_331_4vafo98k:bar'
at System.IO.FileSystem.CopyFile(String, String, Boolean) + 0xf8
at System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(String defaultStream, String alternateStream) + 0x240
at System.IO.FileSystem.Tests!<BaseAddress>+0xa03d4c
at System.Reflection.DynamicInvokeInfo.Invoke(Object, IntPtr, Object[], BinderBundle, Boolean) + 0x150
[FAIL] System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(defaultStream: "", alternateStream: ":bar:$DATA")
System.IO.IOException : The parameter is incorrect. : 'C:\h\w\9BDA087A\t\#File_Copy_str_str_b_w5u25uum.v1y\WindowsAlternateDataStreamOverwrite_330_1eewcxsj\WindowsAlternateDataStreamOverwrite_331_uyotey4z:bar:$DATA'
at System.IO.FileSystem.CopyFile(String, String, Boolean) + 0xf8
at System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(String defaultStream, String alternateStream) + 0x240
at System.IO.FileSystem.Tests!<BaseAddress>+0xa03d4c
at System.Reflection.DynamicInvokeInfo.Invoke(Object, IntPtr, Object[], BinderBundle, Boolean) + 0x150
[FAIL] System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(defaultStream: "::$DATA", alternateStream: ":bar")
System.IO.IOException : The parameter is incorrect. : 'C:\h\w\9BDA087A\t\#File_Copy_str_str_b_dwo5dugm.mu0\WindowsAlternateDataStreamOverwrite_330_0zin5tx0\WindowsAlternateDataStreamOverwrite_331_589zzmte:bar'
at System.IO.FileSystem.CopyFile(String, String, Boolean) + 0xf8
at System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(String defaultStream, String alternateStream) + 0x240
at System.IO.FileSystem.Tests!<BaseAddress>+0xa03d4c
at System.Reflection.DynamicInvokeInfo.Invoke(Object, IntPtr, Object[], BinderBundle, Boolean) + 0x150
[FAIL] System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(defaultStream: "::$DATA", alternateStream: ":bar:$DATA")
System.IO.IOException : The parameter is incorrect. : 'C:\h\w\9BDA087A\t\#File_Copy_str_str_b_z0jr4yj4.rn3\WindowsAlternateDataStreamOverwrite_330_seuj2fuy\WindowsAlternateDataStreamOverwrite_331_v1a2zn1a:bar:$DATA'
at System.IO.FileSystem.CopyFile(String, String, Boolean) + 0xf8
at System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(String defaultStream, String alternateStream) + 0x240
at System.IO.FileSystem.Tests!<BaseAddress>+0xa03d4c
at System.Reflection.DynamicInvokeInfo.Invoke(Object, IntPtr, Object[], BinderBundle, Boolean) + 0x150
@dotnet/area-system-io An unrealted deps flow PR hit this failure in 8.0:
windows-arm64 Release NativeAOT_Libraries
[FAIL] System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(defaultStream: "", alternateStream: ":bar")
System.IO.IOException : The parameter is incorrect. : 'C:\h\w\A0100912\t\#File_Copy_str_str_b_qheie0wz.qb1\WindowsAlternateDataStreamOverwrite_348_ccrsp4uq\WindowsAlternateDataStreamOverwrite_349_8tvqm5y1:bar'
at System.IO.FileSystem.CopyFile(String, String, Boolean) + 0xf4
at System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(String defaultStream, String alternateStream) + 0x260
at System.IO.FileSystem.Tests!<BaseAddress>+0x9e7694
at System.Reflection.DynamicInvokeInfo.InvokeWithFewArguments(IntPtr, Byte&, Byte&, Object[], BinderBundle, Boolean) + 0x78
[FAIL] System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(defaultStream: "", alternateStream: ":bar:$DATA")
System.IO.IOException : The parameter is incorrect. : 'C:\h\w\A0100912\t\#File_Copy_str_str_b_402xd4nr.tat\WindowsAlternateDataStreamOverwrite_348_4ybuuzqq\WindowsAlternateDataStreamOverwrite_349_1b12cs7h:bar:$DATA'
at System.IO.FileSystem.CopyFile(String, String, Boolean) + 0xf4
at System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(String defaultStream, String alternateStream) + 0x260
at System.IO.FileSystem.Tests!<BaseAddress>+0x9e7694
at System.Reflection.DynamicInvokeInfo.InvokeWithFewArguments(IntPtr, Byte&, Byte&, Object[], BinderBundle, Boolean) + 0x78
[FAIL] System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(defaultStream: "::$DATA", alternateStream: ":bar")
System.IO.IOException : The parameter is incorrect. : 'C:\h\w\A0100912\t\#File_Copy_str_str_b_r42qnfwb.cf5\WindowsAlternateDataStreamOverwrite_348_lam2jk4y\WindowsAlternateDataStreamOverwrite_349_v4camptt:bar'
at System.IO.FileSystem.CopyFile(String, String, Boolean) + 0xf4
at System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(String defaultStream, String alternateStream) + 0x260
at System.IO.FileSystem.Tests!<BaseAddress>+0x9e7694
at System.Reflection.DynamicInvokeInfo.InvokeWithFewArguments(IntPtr, Byte&, Byte&, Object[], BinderBundle, Boolean) + 0x78
[FAIL] System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(defaultStream: "::$DATA", alternateStream: ":bar:$DATA")
System.IO.IOException : The parameter is incorrect. : 'C:\h\w\A0100912\t\#File_Copy_str_str_b_tfe1qroe.1lr\WindowsAlternateDataStreamOverwrite_348_iiyqfmza\WindowsAlternateDataStreamOverwrite_349_6927o4x5:bar:$DATA'
at System.IO.FileSystem.CopyFile(String, String, Boolean) + 0xf4
at System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite(String defaultStream, String alternateStream) + 0x260
at System.IO.FileSystem.Tests!<BaseAddress>+0x9e7694
at System.Reflection.DynamicInvokeInfo.InvokeWithFewArguments(IntPtr, Byte&, Byte&, Object[], BinderBundle, Boolean) + 0x78
Run: runtime-coreclr libraries-jitstress 20230319.1
Failed test:
Error message:
Known issue validation
Build: :mag_right: https://dev.azure.com/dnceng-public/public/_build/results?buildId=675511 Error message validated:
[System.IO.Tests.File_Copy_str_str_b.WindowsAlternateDataStreamOverwrite
] Result validation: :white_check_mark: Known issue matched with the provided build. Validation performed at: 5/16/2024 10:38:57 PM UTCReport
Summary
Known Issue Error Message
Fill the error message using step by step known issues guidance.