-
Notifications
You must be signed in to change notification settings - Fork 4.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Test failure: JIT/Methodical/xxobj/sizeof/_il_dbgsizeof_Target_32Bit/_il_dbgsizeof_Target_32Bit.sh #37470
Comments
Many are also failing on Windows x86 |
@dotnet/jit-contrib |
The most important one (fails in most runs): JIT\Methodical\xxobj\sizeof_il_dbgsizeof64_il_dbgsizeof64.cmd |
Looking at |
I don't have any lead on a fix here yet, and will probably work on some other bugs first. If this is really blocking we might want to disable it (and related tests) for now. |
Did the 967d216 build pass the test, and the current one consistently fail the test, for you? |
I can't get this to fail locally. Am going to modify the runtime to assert if the return value is not an "expected" value and see if can use this to get some dumps from CI. |
Looking at commits in that range I wonder if somehow #37274 is involved... among other things it renamed at least some of these tests (to include the |
fwiw, it's interesting that _il_dbgsizeof64.ilproj has:
which seems probably wrong for arm32, since all the other proj files have something like:
|
Looks likely. (Although I don't know why you can't repro. Maybe you could download assets built by the CI and see if those repro locally) Looks like |
Oddly enough |
Seeing if I can get some dumps from CI via #38309. |
Looks like it worked; we have dumps. |
Confirmed that in CI, _il_dbgsizeof64 is running the wrong test case for x86; when I build it locally I get the right one which is why I couldn't repro. |
@jashook @trylek still sorting where things go off track here but I strongly suspect the failures above are from running the wrong versions of these tests on 32 bit platforms. This seems to be a consequence of #37274. Either we're building the tests incorrectly or we're building both 32 and 64 bit versions and then running the wrong one... |
/cc @sdmaclea |
@AndyAyersMS - AFAIK @sdmaclea's work was about building all managed test components just once for all the architecture-specific test flavors, having Roslyn mark them as AnyCpu so that they are portable across execution architectures. From this viewpoint the I'm inclined to suspect that this particular test got either overlooked in Steve's refactoring or added later / independently, not using the new pattern that Steve defined for architecture-specific tests - simply put, for a 32/64-bit specific test we should now have two different test projects both of which get compiled (possibly using different sources or compilation switches) and their execution scripts generated in Having said that, the title of the issue refers to those tests that Steve did split so they shouldn't be affected by the weirdness that @BruceForstall pointed out for the |
As @trylek has mentioned conditional compilation of managed tests using bitness is not supported as we will always build the managed components of the test on x64 OSX in CI. Specifically below would not work in CI:
|
Seems like this specific ilproj should just be deleted. There is already an ilproj for _il_dbgsizeof64_target_64bit and _il_dbgsizeof64_target_32bit |
@trylek @jashook the x86 case seems to be in hand. Now trying to figure out what gets built and what gets run for the arm32 failures. I have core dumps for these on arm32 from https://dev.azure.com/dnceng/public/_build/results?buildId=701494&view=ms.vss-test-web.build-test-results-tab&runId=21752388&resultId=107271&paneView=dotnet-dnceng.dnceng-build-release-tasks.helix-test-information-tab but haven't gotten to extracting the test IL just yet... my lldb/sos combo is not happy. |
Ah, think I've perhaps finally figured this out. Arm defines Before the changes in #37274 we were checking for arch=x86 when doing test version selection, and so on arm we were running the "64 bit" flavors of these tests. Now we're running the 32 bit flavors and they're failing. That also explains why some other bit-size specific tests are ok and these particular tests are not. I don't think these tests are all that valuable overall so instead of adding yet another category of exclusion/selection I'm tempted to just disable them for arm. Thoughts? |
So it looks like "x86" was right all along, and it wasn't a 32-bit/64-bit question. @jashook @trylek @sdmaclea Is there an existing mechanism for determining a test run time whether a test should be run or not, based on architecture (or other criteria) (in the metadata; without adding that logic to the test)? |
Seems a little odd that arm32 has the same class sizes as x64/arm64. Perhaps that was intentional, or perhaps a happy accident. |
That's only because there are no pointers involved. Actually, I'm thinking maybe these tests are valuable specifically for ARM, because ARM is the only platform that defines |
Note that these tests were previously disabled for arm32 in |
This is the mechanism to control whether the script is generated for a given platform <!-- This test runs on all platforms except x86 -->
<CLRTestTargetUnsupported Condition="'$(TargetArchitecture)' != 'x86'">true</CLRTestTargetUnsupported> |
There was a class of tests which had 64-bit, 32-bit, and arm32-bit flavors of tests. |
In these test cases, arm happens to have the same class sizes as arm64/x64. So my proposal is to add another set of ILPROJs for arm, splitting the "target_32bit" cases into "target_x86" and "target_arm", and include the "64 bit" il sources for the latter. I won't rename the sources unless we feel it can add clarity. |
On these tests the arm class layout happens to match the x64/arm64 layout and is different than the x86 layout. So, introduce arm specific test projects for these tests. Also in the recent test build conversion one project was overlooked, so update that project to work with this new scheme as well. Closes dotnet#37470.
On these tests the arm class layout happens to match the x64/arm64 layout and is different than the x86 layout. So, introduce arm specific test projects for these tests. Also in the recent test build conversion one project was overlooked, so update that project to work with this new scheme as well. Remove all exclusions for these and older variants of these tests. Closes #37470.
failed in job: runtime-coreclr outerloop 20200604.7
failed tests:
JIT/Methodical/xxobj/sizeof/_il_dbgsizeof_Target_32Bit/_il_dbgsizeof_Target_32Bit.sh
JIT/Methodical/xxobj/sizeof/_il_relsizeof_Target_32Bit/_il_relsizeof_Target_32Bit.sh
JIT/Methodical/xxobj/sizeof/_il_relsizeof32_Target_32Bit/_il_relsizeof32_Target_32Bit.sh
JIT/Methodical/xxobj/sizeof/_il_dbgsizeof32_Target_32Bit/_il_dbgsizeof32_Target_32Bit.sh
JIT/Methodical/xxobj/sizeof/_il_relsizeof64_Target_32Bit/_il_relsizeof64_Target_32Bit.sh
Error message
The text was updated successfully, but these errors were encountered: