Skip to content

Test failure: JIT/Methodical/xxobj/sizeof/_il_dbgsizeof_Target_32Bit/_il_dbgsizeof_Target_32Bit.sh #37470

Closed

Description

@v-haren

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

Return code: 1
Raw output file: /root/helix/work/workitem/JIT/Methodical/Reports/JIT.Methodical/xxobj/sizeof/_il_dbgsizeof_Target_32Bit/_il_dbgsizeof_Target_32Bit.output.txt
Raw output:
BEGIN EXECUTION
/root/helix/work/correlation/corerun _il_dbgsizeof_Target_32Bit.dll ''
sizeof(RefComplexStruct) failed.
Expected: 100
Actual: 104
END EXECUTION - FAILED
Test Harness Exitcode is : 1
To run the test:
> set CORE_ROOT=/root/helix/work/correlation
> /root/helix/work/workitem/JIT/Methodical/xxobj/sizeof/_il_dbgsizeof_Target_32Bit/_il_dbgsizeof_Target_32Bit.sh
Expected: True
Actual: False


Stack trace
   at JIT_Methodical._xxobj_sizeof__il_dbgsizeof_Target_32Bit__il_dbgsizeof_Target_32Bit_._xxobj_sizeof__il_dbgsizeof_Target_32Bit__il_dbgsizeof_Target_32Bit_sh() in /__w/1/s/artifacts/tests/coreclr/Linux.arm.Checked/TestWrappers/JIT.Methodical/JIT.Methodical.XUnitWrapper.cs:line 201318

Activity

  1. added
    area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
    on Jun 5, 2020
  2. added
    os-linuxLinux OS (any supported distro)
    and removed
    untriagedNew issue has not been triaged by the area owner
    on Jun 5, 2020
  3. added this to the 5.0 milestone on Jun 5, 2020
  4. BruceForstall commented on Jun 5, 2020

    @BruceForstall
    Contributor

    CoreCLR Linux arm Checked @ (Ubuntu.1804.Arm32.Open)Ubuntu.1804.Armarch.Open

    Many are also failing on Windows x86

  5. BruceForstall commented on Jun 5, 2020

    @BruceForstall
    Contributor

    @dotnet/jit-contrib

  6. added
    blocking-outerloopBlocking the 'runtime-coreclr outerloop' and 'runtime-libraries-coreclr outerloop' runs
    on Jun 13, 2020
  7. BruceForstall commented on Jun 15, 2020

    @BruceForstall
    Contributor

    The most important one (fails in most runs):

    JIT\Methodical\xxobj\sizeof_il_dbgsizeof64_il_dbgsizeof64.cmd

  8. AndyAyersMS commented on Jun 16, 2020

    @AndyAyersMS
    Member

    Looking at _il_dbgsizeof64, there is just one novel method Main jitted and it is debug codegen. CI history shows failures starting around 6/1, so I build an x86 jit from just before then at 967d216 and diffed codegen for Main with current master; they're identical.

  9. 13 remaining items

  10. jashook commented on Jun 24, 2020

    @jashook
    Contributor

    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:

    <Compile Condition="'$(TargetArchitecture)' == 'x86'" Include="sizeof64.il" />
    <Compile Condition="'$(TargetArchitecture)' != 'x86'" Include="64sizeof64.il" />
    
  11. jashook commented on Jun 24, 2020

    @jashook
    Contributor

    Seems like this specific ilproj should just be deleted. There is already an ilproj for _il_dbgsizeof64_target_64bit and _il_dbgsizeof64_target_32bit

  12. AndyAyersMS commented on Jun 24, 2020

    @AndyAyersMS
    Member

    @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.

  13. AndyAyersMS commented on Jun 27, 2020

    @AndyAyersMS
    Member

    Ah, think I've perhaps finally figured this out.

    Arm defines FEATURE_64BIT_ALIGNMENT and so the class sizes on arm don't match those on x86.

    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?

  14. BruceForstall commented on Jun 27, 2020

    @BruceForstall
    Contributor

    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)?

  15. AndyAyersMS commented on Jun 27, 2020

    @AndyAyersMS
    Member

    Seems a little odd that arm32 has the same class sizes as x64/arm64. Perhaps that was intentional, or perhaps a happy accident.

  16. BruceForstall commented on Jun 27, 2020

    @BruceForstall
    Contributor

    Seems a little odd that arm32 has the same class sizes as x64/arm64.

    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 FEATURE_64BIT_ALIGNMENT and has that particular alignment requirements, so protecting against regression there makes sense.

  17. BruceForstall commented on Jun 27, 2020

    @BruceForstall
    Contributor

    Note that these tests were previously disabled for arm32 in issues.targets with the note "needs triage". After #37274, the issues.targets references were renamed for the new test names, however, the directories were written with incorrect casing. So presumably case-insensitive Windows has them disabled but case-sensitive Linux does not. Then #38186 disabled them for all platforms by adding another set of disabling text, this time with the correct casing (but note that the bad casing is still there).

  18. sdmaclea commented on Jun 29, 2020

    @sdmaclea
    Contributor

    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>
  19. sdmaclea commented on Jun 29, 2020

    @sdmaclea
    Contributor

    There was a class of tests which had 64-bit, 32-bit, and arm32-bit flavors of tests.

  20. AndyAyersMS commented on Jun 29, 2020

    @AndyAyersMS
    Member

    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.

  21. added a commit that references this issue on Jun 29, 2020
    54de37a
  22. added a commit that references this issue on Jun 30, 2020
    5bed9e7
  23. ghost locked as resolved and limited conversation to collaborators on Dec 8, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMIblocking-outerloopBlocking the 'runtime-coreclr outerloop' and 'runtime-libraries-coreclr outerloop' runs

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions