Skip to content

mono interp_compute_dominance_frontier alloc 900m+ memory for 3k line method #121547

@srxqds

Description

@srxqds

Description

I have a generated method with 3k lines. crash with Could not allocate 990414064 bytes

Image

I have print the value in the method interp_compute_dominance_frontier

g_print ("interp_compute_dominance_frontier: %s %d %d %d\n", mono_method_get_full_name(td->method), bitsize, td->bblocks_count_no_eh, bitsize * td->bblocks_count_no_eh);

and print:

MonoPrintf interp_compute_dominance_frontier: void CsbFilePathConst:.cctor () 11132 88970 990414040

Reproduction Steps

you can download the bug.zip file and decompress it.
This cannot be run directly, but it should be enough to help analyze the problem.
bug.zip

and the CsbFilePathHelper.Cast source code show below:

public static class CsbFilePathHelper
{
internal static string Cast(ref Utf8JsonReader reader)
{
    // 防御一下错误数据
    if (reader.TokenType != JsonTokenType.String)
    {
        reader.Skip();
        return string.Empty;
    }
    return Cast(reader.GetString());     
}
}

Expected behavior

do not crash, work well

Actual behavior

crash

Regression?

I don't know

Known Workarounds

I have not trying.

Configuration

mono.browser.wasm 9.0.3 version

Other information

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions