GA_麦德三世
25-12-15 12:45

之前那个奇妙的问题http://t.cn/AXUcvNeD,最终证明是csharp wasi-wasm环境运行时的问题。
for (int i = 0; i < 20; i++)
{
var result = Test(new Vector2(2, 3));
Console.WriteLine(result);
}

static float Test(Vector2 v1)
{
var l = v1.X;
var v2 = new Vector2(1, 1) / l;
for (var i = 0; i < 40; i++)
{
for (var j = 0; j < 40; j++)
{
}
}

return v2.X;
}
图一为.net 9 rc2的wasi-wasm执行结果,图二为.net 10的wasi-wasm执行结果。
在9中,一旦循环次数过多,返回值会变成我传入的第一个参数!不管vector2的乘除法都有这个问题。而我如果尝试去取计算结果的地址,那它就会变正常,取vector的length,它也会正常。加了字符串内插也正常。

这个问题仅会在.net 9的wasi-wasm环境出现。wasm-browser环境没有观察到同样症状。由于.net 10是正常的,或许可以在github上找到修复提交。

发布于 上海