dotnet / runtime

.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
https://docs.microsoft.com/dotnet/core/
MIT License
15.07k stars 4.69k forks source link

[x86/Linux] GC Stress Test with level 4 #7899

Open wateret opened 7 years ago

wateret commented 7 years ago

GC Stress test with level less than 4 are fine but with level 4 looks like CLR requires CoreDisTools.

$ COMPlus_GCStress=4 /work/nfs/dotnet/t2/corerun /work/nfs/dotnet/unittest-p0/Windows_NT.x86.Release/GC/API/GC/RemoveMemoryPressureTest/RemoveMemoryPressureTest.exe
LoadLibrary failed for '/work/nfs/dotnet/t2/libcoredistools.so': error 126
External disassembler is not available.
coreclr_initialize failed - status: 0x80004005

category:reach theme:testing skill-level:intermediate cost:medium

wateret commented 7 years ago

On my x64/Linux machine, I was able to get libcoredistools.so with tests/setup-runtime-dependencies.sh. Is there a same file for x86/Linux?

In the script file, I've tried to change the $rid from ubuntu.14.04-x64 to ubuntu.14.04-x86 but I still get the x64 version.

wateret commented 7 years ago

I also tried to build LLILC but it is not easy to build it on x86. Is LLILC is the right source for CoreDisTools?

janvorli commented 7 years ago

Yes, it requires the libcoredistools.so - a disassembler - to figure out sizes of instructions so that it can insert an invalid instruction after each generated asm instruction to invoke a signal handler and trigger a GC. I think that llilc is the right source of the coredistools stuff. But most of the GC related issues can be discovered with GC modes 1, 2 and 3, so if you want to use it now just as a tool for verifying the changes you are working on, then I'd recommend using just those three modes and leaving the support for the modes >=4 for later.

RussKeldorph commented 7 years ago

Yeah, we need to produce libcoredistools.so for Linux/x86.

@dotnet/jit-contrib @swaroop-sridhar FYI

BruceForstall commented 6 years ago

@zamont I was talking to you yesterday about how we need coredistools for more platforms; here's an issue related to Linux/x86, and @sergign60 has a need for this in the referenced issue.

TIHan commented 11 months ago

This is still an issue, but I don't think it is a priority right now. The solution seems to just be to build the coredistools for linux/x86.