Commit d51a70b
Fix x86 async frame generic type resolution in DBI (#126915)
CordbAsyncFrame::LoadGenericArgs was using SafeReadStruct<CORDB_ADDRESS>
to read the generic arg token from the continuation object.
CORDB_ADDRESS is ULONG64 (always 8 bytes), but on x86 targets the field
is a 4-byte pointer. Reading 8 bytes pulled in adjacent memory,
producing garbage pointer values that caused EnumerateTypeParameters to
return E_INVALIDARG.
Changed to SafeReadStruct<SIZE_T> which matches the target pointer size
(4 bytes on x86, 8 bytes on x64), consistent with how
CordbJITILFrame::LoadGenericArgs reads tokens via
GetRegisterOrStackValue.
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>1 parent 39314d4 commit d51a70b
1 file changed
+8
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11546 | 11546 | | |
11547 | 11547 | | |
11548 | 11548 | | |
11549 | | - | |
11550 | | - | |
| 11549 | + | |
| 11550 | + | |
| 11551 | + | |
| 11552 | + | |
| 11553 | + | |
| 11554 | + | |
| 11555 | + | |
| 11556 | + | |
11551 | 11557 | | |
11552 | 11558 | | |
11553 | 11559 | | |
| |||
0 commit comments