Description
This issue was created to describe the reason of failure of two corefx tests built for riscv64
architecture and executed in QEMU
environment on x64
architecture:
- System.Diagnostics.Tests.ProcessTests.TestMaxWorkingSet()
- System.Diagnostics.Tests.ProcessTests.TestMinWorkingSet()
On QEMU the method:
private static bool Interop.TryReadFile(string path, [NotNullWhen(true)] out string? contents)
defined in:
/runtime/src/libraries/Common/src/Interop/Linux/procfs/Interop.ProcFsStat.TryReadStatusFile.cs
for the path parameter equal to "/proc/pid/stat", where pid is the process id executed under QEMU emulation, returns string like that:
360312 (dotnet) 0 109490 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 274903147680 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
The 25th value in the string is "Current soft limit in bytes on the rss of the process" and equals to zero.
The tests expect value to be greater than zero:
Assert.InRange() Failure: Value not in range
Range: (1 - 9223372036854775807)
Actual: 0
The string read by Interop.TryReadFile()
method on riscv64 VisionFive2 board is:
3179342 (dotnet) R 3179327 3179327 2796412 34817 3179327 4210688 683 0 0 0 2 0 0 0 20 0 6 0 314166288 141225422848 2836 18446744073709551615 183816348496 183816382592 274449615744 0 0 0 0 4096 17662 0 0 0 17 0 0 0 0 0 0 183816392368 183816392480 183816392704 274449616559 274449617226 274449617226 274449620912 0
and on x64 architecture is:
360089 (dotnet) R 360072 360072 109490 34820 360072 4194560 849 0 0 0 0 0 0 0 20 0 8 0 20442322 279661006848 3760 18446744073709551615 96971671317360 96971671358672 140724721806640 0 0 0 0 4096 17662 0 0 0 17 12 0 0 0 0 0 96971671368400 96971671368536 96971698143232 140724721812943 140724721813590 140724721813590 140724721815480 0
and 25th value is 18446744073709551615
for VF2 board and 18446744073709551615
for x64 architecture.