Skip to content

Conversation

@AArnott
Copy link
Member

@AArnott AArnott commented Apr 7, 2023

The old behavior was breaking interop for the PROCESS_BASIC_INFORMATION struct's PEB* PebBaseAddress field. When this field was changed to a PEB[], the struct became a 'managed' type (in interop terms) yet the CLR's interop layer has no information about array length, etc. and marshaling would fail.

It turned out this "small" change led to a series of test failures due to other latent bugs that only manifest when we changed the mixture of how structs (with their managed and unmanaged variants) interact, leading to this surprisingly large set of changes.

Fixes #904

…o an array

The old behavior was breaking interop for the `PROCESS_BASIC_INFORMATION` struct's `PEB* PebBaseAddress` field. When this field was changed to a `PEB[]`, the struct became a 'managed' type (in interop terms) yet the CLR's interop layer has no information about array length, etc. and marshaling would fail.

It turned out this "small" change led to a series of test failures due to other latent bugs that only manifest when we changed the mixture of how structs (with their managed and unmanaged variants) interact, leading to this surprisingly large set of changes.

Fixes #904
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

PROCESS_BASIC_INFORMATION incorrectly generated?

2 participants