Skip to content

[wasm-mt] JSImport and JSExport marshaler infrastructure is not initialized on web worker threads #77287

@thaystg

Description

@thaystg

Assert failed: ERR41: Unknown converter for type 13

To reproduce:

  • build.cmd mono+libs -os browser /p:WasmEnableThreads=true

  • dotnet test src/mono/wasm/debugger/DebuggerTestSuite --filter DebuggerTests.MiscTests.InspectTaskAtLocals -e RuntimeConfiguration=Debug -e Configuration=Debug -e DebuggerHost=chrome -e WasmEnableThreads=true (only to build)

  • Go to folder and run:

cd \artifacts\bin\debugger-test\Debug\AppBundle

..\..\..\..\..\dotnet.cmd serve  -h "Cross-Origin-Opener-Policy:same-origin" -h "Cross-Origin-Embedder-Policy:require-corp" -p 9400
Open on chrome: http://localhost:9400/debugger-driver.html
  • Open Inspector
  • Go to Watch and run this command: invoke_static_method_async('[debugger-test] InspectTask:RunInspectTask')

IMPORTANT: This is not using anything related to our debugger, because we are not using the remote debugging and the browser debug proxy.

As discussed with Pavel this is expected to not work.

This is the C# code executed:

public class WeatherForecast
{
    public DateTime Date { get; set; }

    public int TemperatureC { get; set; }

    public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);

    public string Summary { get; set; }
}

public class InspectTask
{
    public static async System.Threading.Tasks.Task RunInspectTask()
    {
        WeatherForecast[] forecasts = null;
        var httpClient = new System.Net.Http.HttpClient();
        var getJsonTask = httpClient.GetFromJsonAsync<WeatherForecast[]>("http://localhost:9400/weather.json");
        try
        {
            await getJsonTask.ContinueWith(t =>
                {
                    int a = 10;
                    Console.WriteLine(a);
                    if (t.IsCompletedSuccessfully)
                        forecasts = t.Result;

                    if (t.IsFaulted)
                        throw t.Exception!;
                });
        }
        catch (Exception ex)
        {
            Console.WriteLine($"error {ex}");
            return;
        }
    }
}

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions