Skip to content
This repository has been archived by the owner on Jan 23, 2023. It is now read-only.

Fix GC stress modes 4 and 8 on Linux ARM #17456

Merged
merged 1 commit into from Apr 6, 2018

Conversation

janvorli
Copy link
Member

@janvorli janvorli commented Apr 6, 2018

There were two problems:

  • The illegal instruction 0xde01 used for INTERRUPT_INSTR_CALL doesn't
    generate SIGILL, but SIGTRAP, since this is the code used for
    breakpoints.
  • The USE_REDIRECT_FOR_GCSTRESS was defined even for FEATURE_PAL for
    ARM, which is incorrect and resulted in explicit redirect frame not
    being created in DoGcStress and thus the GC stack walk was skipping
    managed frames that it should walk.

There were two problems:
* The illegal instruction 0xde01 used for INTERRUPT_INSTR_CALL doesn't
  generate SIGILL, but SIGTRAP, since this is the code used for
  breakpoints.
* The USE_REDIRECT_FOR_GCSTRESS was defined even for FEATURE_PAL for
  ARM, which is incorrect and resulted in explicit redirect frame not
  being created in DoGcStress and thus the GC stack walk was skipping
  managed frames that it should walk.
@janvorli janvorli added this to the 2.1.0 milestone Apr 6, 2018
@janvorli janvorli self-assigned this Apr 6, 2018
@janvorli
Copy link
Member Author

janvorli commented Apr 6, 2018

@BruceForstall I've verified the GCStress 4 works with this change using the JIT/Performance/CodeQuality/BenchmarksGame/regex-redux/regex-redux-1 test. It was crashing before.

Copy link
Member

@BruceForstall BruceForstall left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thank you!

@janvorli janvorli merged commit 75757bf into dotnet:master Apr 6, 2018
@janvorli janvorli deleted the fix-arm-gcstress-4-8 branch April 6, 2018 16:44
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
2 participants