Fix fat tokens on wasm
- Dominant language
- C#
- Stars
- 18.3k
- Forks
- 5.6k
- PR merge metrics
- PR metrics pending
Description
We crash in
```
RuntimeError: memory access out of bounds
at corerun.wasm.DispatchToken::DecodeTypeID(unsigned long) (wasm://wasm/corerun.wasm-1b666b1a:wasm-function[14972]:0x57fa67)
at corerun.wasm.DispatchToken::GetTypeID() const (wasm://wasm/corerun.wasm-1b666b1a:wasm-function[14956]:0x57db75)
at corerun.wasm.DispatchToken::IsThisToken() const (wasm://wasm/corerun.wasm-1b666b1a:wasm-function[14970]:0x57f6aa)
at corerun.wasm.VirtualCallStubManager::GetTarget(DispatchToken, MethodTable*, int) (wasm://wasm/corerun.wasm-1b666b1a:wasm-function[14974]:0x57fd4c)
at corerun.wasm.MethodTable::GetMethodDescForInterfaceMethod(TypeHandle, MethodDesc*, int) (wasm://wasm/corerun.wasm-1b666b1a:wasm-function[12091]:0x479f52)
at corerun.wasm.MethodTable::GetMethodDescForInterfaceMethodAndServer(TypeHandle, MethodDesc*, OBJECTREF*) (wasm://wasm/corerun.wasm-1b666b1a:wasm-function[12090]:0x479d46)
at corerun.wasm.MethodDesc::GetMethodDescOfVirtualizedCode(OBJECTREF*, TypeHandle) (wasm://wasm/corerun.wasm-1b666b1a:wasm-function[11753]:0x46014e)
at corerun.wasm.InterpExecMethod(InterpreterFrame*, InterpMethodContextFrame*, InterpThreadContext*, ExceptionClauseArgs*) (wasm://wasm/corerun.wasm-1b666b1a:wasm-function[17464]:0x6af12d)
at corerun.wasm.ExecuteInterpretedMethod (wasm://wasm/corerun.wasm-1b666b1a:wasm-function[13209]:0x4d837c)
at corerun.wasm.ExecuteInterpretedMethodWithArgs (wasm://wasm/corerun.wasm-1b666b1a:wasm-function[13217]:0x4d889e)
```
when the stress testing overflow mechanism is enabled here
https://github.com/dotnet/runtime/blob/fc1dee66fac8ae088d01d07b4a2faaeef15a234a/src/coreclr/vm/contractimpl.h#L322
Contributor guide
Assessment
This issue has not been assessed yet.