Skip to content

.cancel() + .rebuild() = memory leak (w/ repro) #4231

@nemosmithasf

Description

@nemosmithasf

Describe

ESbuild leaks memory when cancelling rebuild, if done rapidly.

Repro

node main.ts -> Check Resource Manager
esbuild_cancel_leak.zip

import * as esbuild from 'esbuild';

const _ctx = await esbuild.context({
	entryPoints: ['./content.ts'],
	format: 'esm',
	bundle: true,
	write: false,
	outfile: 'main',
});

const fn = async () => {
	await _ctx.cancel();
	_ctx.rebuild().catch(() => {});
};

for (let i = 0; 1_000_000 > i; i++) {
	await fn();
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions