Skip to content
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

Implement memory allocation interceptors for full 64 bit support #11

Open
fmoessbauer opened this issue Jun 13, 2019 · 1 comment
Open
Assignees
Labels
enhancement New feature or request known-limitation This problem is known and will unlikely be fixed

Comments

@fmoessbauer
Copy link
Member

Currently, only the lower 32 bit of each memory address are considered for race-detection. For the PoC this was sufficient, but for real applications the full addresses have to be analyzed.

The reason behind this decision was to avoid changes to the memory mapping table of TSAN. To properly handle all accesses, we have to make sure that all memory we want to track is inside either the EXECUTABLE region or inside a heap.

Thereto, we have to shift all heaps inside a shadowable region or alternatively change the regions in TSAN.

@fmoessbauer fmoessbauer added the enhancement New feature or request label Jun 13, 2019
@fmoessbauer fmoessbauer self-assigned this Jun 13, 2019
@fmoessbauer
Copy link
Member Author

TSAN-Go has some strict assumptions on the memory layout of the go heap, including:

  • The heap grows contiguously (and only up)
  • The memory is aligned to a page boundary

For details on this topic, see also:

As we do not change the behavior of the application under test, it will be tricky to fulfill these constraints.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request known-limitation This problem is known and will unlikely be fixed
Projects
None yet
Development

No branches or pull requests

1 participant