dotnet/runtime · critical

END: coreclr_execute_assembly failed - Error: 0x%08x

Error message

END: coreclr_execute_assembly failed - Error: 0x%08x

What it means

Closing marker (matching BEGIN at 639) that ends the diagnostic block printed after coreclr_execute_assembly() fails. Repeats the HRESULT so log tooling can bracket the dump_details() output between BEGIN and END.

Source

Thrown at src/coreclr/hosts/corerun/corerun.cpp:641

        coreclr_set_error_writer_func(nullptr);
    }

    int exit_code;
    {
        actions.before_execute_assembly(config.entry_assembly_fullpath);

        result = coreclr_execute_func(
            CurrentClrInstance,
            CurrentAppDomainId,
            config.entry_assembly_argc,
            argv_utf8.get(),
            entry_assembly_utf8.c_str(),
            (uint32_t*)&exit_code);
        if (FAILED(result))
        {
            pal::fprintf(stderr, W("BEGIN: coreclr_execute_assembly failed - Error: 0x%08x\n"), result);
            logger.dump_details();
            pal::fprintf(stderr, W("END: coreclr_execute_assembly failed - Error: 0x%08x\n"), result);
            return -1;
        }

        actions.after_execute_assembly();
    }

#ifdef TARGET_BROWSER
    // in NodeJS/Browser this is not really end of the process, JS keeps running.
    // We want to keep the CoreCLR runtime alive to be able to process async work
    // The NodeJS process is kept alive by pending async work via safeSetTimeout() -> runtimeKeepalivePush()
    // The actual exit code would be set by SystemJS_ResolveMainPromise if the managed Main() is async.
    // Or in Module.onExit handler when  managed Main() is synchronous.
    return exit_code;
#else // TARGET_BROWSER
    int final_exit_code = corerun_shutdown(exit_code);
#ifdef TARGET_WASI
    // wasi:cli/exit's stable exit() only signals ok/err, so wasmtime
    // collapses any non-zero Main return to host exit 1. When

View on GitHub (pinned to 290d5ab72c)

Solutions

  1. Pair with BEGIN (203); extract all lines between them as failure context.
  2. Apply the HRESULT-driven diagnosis from error 203.
  3. Feed the captured block to the same parser used for 201/202.
Defensive patterns

Strategy: validation

Validate before calling

# same bracketing extractor as 201/202
grep -A60 'BEGIN: coreclr_execute_assembly failed' run.log | sed '/END: coreclr_execute_assembly failed/q'

Prevention

When it happens

Trigger: Always emitted immediately after logger.dump_details() following a FAILED coreclr_execute_func() result at line 637-638. Never appears without the preceding BEGIN line.

Common situations: Same as error 203; exists for log bracketing of the property/argument dump between BEGIN and END.

Related errors


AI-assisted analysis of dotnet/runtime@290d5ab72c (2026-08-06). Data as JSON: /api/errors/d973d62c470b54f0. Report an issue: GitHub.