Skip to content

Out of memory after migrating from 3 > 4 #15785

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
bjornharvold opened this issue Jan 24, 2025 · 6 comments
Open

Out of memory after migrating from 3 > 4 #15785

bjornharvold opened this issue Jan 24, 2025 · 6 comments

Comments

@bjornharvold
Copy link

What version of Tailwind CSS are you using?

v4.0.0

What build tool (or framework if it abstracts the build tool) are you using?

For example: Angular 19

What version of Node.js are you using?

For example: v22.0.x

What browser are you using?

For example: Chrome

What operating system are you using?

For example: macOS

Reproduction URL

NA

Describe your issue

We have a 2000+ module monorepo where a few 100 of these modules use Tailwind 3.x and are built as libraries with Nx.

Then we tried migrating.

  1. Added .postcssrc.json with this content:
{
  "plugins": {
    "@tailwindcss/postcss": {}
  }
}
  • Ran npx @tailwindcss/upgrade@next

Tried to run one of our Tailwind apps. It takes forever to build and it eventually fails with an out-of-memoy error:

> nx run online-travel-agency:serve:development --host=dev.wink.travel --port=4200 --ssl=true --ssl-key=./certs/dev.wink.travel-key.pem --ssl-cert=./certs/dev.wink.travel.pem


Warning: This is a simple server for use in testing or debugging Angular applications
locally. It hasn't been reviewed for security issues.

Binding this server to an open connection can result in compromising your application or
computer. Using a different host than the one passed to the "--host" flag might result in
websocket connection issues. You might need to use "--disable-host-check" if that's the
case.
    
Component HMR has been enabled.
If you encounter application reload issues, you can manually reload the page to bypass HMR and/or disable this feature with the `--no-hmr` command line option.
Please consider reporting any issues you encounter here: https://github.com/angular/angular-cli/issues

⠋ Building...

<--- Last few GCs --->

[26609:0x120008000]   495037 ms: Mark-Compact 4014.9 (4129.8) -> 4001.1 (4132.3) MB, pooled: 5 MB, 1536.67 / 0.00 ms  (average mu = 0.125, current mu = 0.032) allocation failure; scavenge might not succeed
[26609:0x120008000]   496680 ms: Mark-Compact 4016.9 (4132.3) -> 4003.0 (4134.0) MB, pooled: 3 MB, 1631.75 / 0.00 ms  (average mu = 0.067, current mu = 0.007) allocation failure; scavenge might not succeed


<--- JS stacktrace --->

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
----- Native stack trace -----

 1: 0x1006a874c node::OOMErrorHandler(char const*, v8::OOMDetails const&) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
 2: 0x10084fff0 v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
 3: 0x10084ffa4 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
 4: 0x1009f59d8 v8::internal::Heap::CallGCPrologueCallbacks(v8::GCType, v8::GCCallbackFlags, v8::internal::GCTracer::Scope::ScopeId) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
 5: 0x1009f7720 v8::internal::Heap::DevToolsTraceEventScope::~DevToolsTraceEventScope() [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
 6: 0x1009f6090 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags)::$_1::operator()() const [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
 7: 0x1009f5d44 void heap::base::Stack::SetMarkerAndCallbackImpl<v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags)::$_1>(heap::base::Stack*, void*, void const*) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
 8: 0x1005b8028 PushAllRegistersAndIterateStack [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
 9: 0x1009f4700 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
10: 0x1009eace8 v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
11: 0x1009eb454 v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
12: 0x1009c49ac v8::internal::MaybeHandle<v8::internal::SeqOneByteString> v8::internal::FactoryBase<v8::internal::Factory>::NewRawStringWithMap<v8::internal::SeqOneByteString>(int, v8::internal::Tagged<v8::internal::Map>, v8::internal::AllocationType) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
13: 0x100c3ee7c v8::internal::String::SlowFlatten(v8::internal::Isolate*, v8::internal::Handle<v8::internal::ConsString>, v8::internal::AllocationType) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
14: 0x100cfd634 v8::internal::Runtime_StringCharCodeAt(int, unsigned long*, v8::internal::Isolate*) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
15: 0x100499af4 Builtins_CEntry_Return1_ArgvOnStack_NoBuiltinExit [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
16: 0x109ad3e18 
17: 0x10976c2ec 
18: 0x10976efbc 
19: 0x10976ee1c 
20: 0x10976e830 
21: 0x1004c865c Builtins_ArrayMap [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
22: 0x1096e3450 
23: 0x100441290 Builtins_AsyncFunctionAwaitResolveClosure [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
24: 0x10050c4d8 Builtins_PromiseFulfillReactionJob [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
25: 0x100431594 Builtins_RunMicrotasks [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
26: 0x100402af4 Builtins_JSRunMicrotasksEntry [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
27: 0x1009610f8 v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
28: 0x1009617f0 v8::internal::(anonymous namespace)::InvokeWithTryCatch(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
29: 0x100984cf0 v8::internal::MicrotaskQueue::RunMicrotasks(v8::internal::Isolate*) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
30: 0x100984a80 v8::internal::MicrotaskQueue::PerformCheckpointInternal(v8::Isolate*) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
31: 0x1005b95e4 node::InternalCallbackScope::Close() [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
32: 0x1005b9b64 node::InternalMakeCallback(node::Environment*, v8::Local<v8::Object>, v8::Local<v8::Object>, v8::Local<v8::Function>, int, v8::Local<v8::Value>*, node::async_context, v8::Local<v8::Value>) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
33: 0x1005d1a04 node::AsyncWrap::MakeCallback(v8::Local<v8::Function>, int, v8::Local<v8::Value>*) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
34: 0x1006ae958 node::fs::FSReqCallback::Resolve(v8::Local<v8::Value>) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
35: 0x1006b1420 node::fs::AfterScanDir(uv_fs_s*) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
36: 0x10069f094 node::MakeLibuvRequestCallback<uv_fs_s, void (*)(uv_fs_s*)>::Wrapper(uv_fs_s*) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
37: 0x10498214c uv__work_done [/opt/homebrew/Cellar/libuv/1.50.0/lib/libuv.1.dylib]
38: 0x104985a74 uv__async_io [/opt/homebrew/Cellar/libuv/1.50.0/lib/libuv.1.dylib]
39: 0x10499601c uv__io_poll [/opt/homebrew/Cellar/libuv/1.50.0/lib/libuv.1.dylib]
40: 0x104985f08 uv_run [/opt/homebrew/Cellar/libuv/1.50.0/lib/libuv.1.dylib]
41: 0x1005ba428 node::SpinEventLoopInternal(node::Environment*) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
42: 0x1006f2774 node::NodeMainInstance::Run(node::ExitCode*, node::Environment*) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
43: 0x1006f24c8 node::NodeMainInstance::Run() [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
44: 0x100668ca0 node::Start(int, char**) [/opt/homebrew/Cellar/node@22/22.13.0/bin/node]
45: 0x19d158274 start [/usr/lib/dyld]
fatal error: all goroutines are asleep - deadlock!

goroutine 1 [chan receive]:
github.com/evanw/esbuild/internal/helpers.(*ThreadSafeWaitGroup).Wait(...)
	github.com/evanw/esbuild/internal/helpers/waitgroup.go:36
main.runService.func2()
	github.com/evanw/esbuild/cmd/esbuild/service.go:114 +0x88
main.runService(0x1)
	github.com/evanw/esbuild/cmd/esbuild/service.go:160 +0x47c
main.main()
	github.com/evanw/esbuild/cmd/esbuild/main.go:241 +0x898

goroutine 7 [chan receive]:
main.runService.func1()
	github.com/evanw/esbuild/cmd/esbuild/service.go:98 +0x40
created by main.runService in goroutine 1
	github.com/evanw/esbuild/cmd/esbuild/service.go:97 +0x19c

goroutine 8 [chan receive]:
main.(*serviceType).sendRequest(0x140000ea2d0, {0x102b81d60, 0x140151e9080})
	github.com/evanw/esbuild/cmd/esbuild/service.go:192 +0x138
main.runService.func3()
	github.com/evanw/esbuild/cmd/esbuild/service.go:125 +0x44
created by main.runService in goroutine 1
	github.com/evanw/esbuild/cmd/esbuild/service.go:122 +0x2e4

goroutine 997 [chan receive, 8 minutes]:
main.(*serviceType).sendRequest(0x140000ea2d0, {0x102b81d60, 0x14003930a20})
	github.com/evanw/esbuild/cmd/esbuild/service.go:192 +0x138
main.(*serviceType).convertPlugins.func2.4({{0x14004bb9b90, 0x90}, {0x102a473ef, 0x4}, {0x0, 0x0}, {0x0, 0x0}, 0x0})
	github.com/evanw/esbuild/cmd/esbuild/service.go:1069 +0x634
github.com/evanw/esbuild/pkg/api.(*pluginImpl).onLoad.func1({{0x0, 0x0}, {{0x14004bb9b90, 0x90}, {0x102a473ef, 0x4}, {0x0, 0x0}, {{0x0, 0x0}}, ...}})
	github.com/evanw/esbuild/pkg/api/api_impl.go:1992 +0x130
github.com/evanw/esbuild/internal/bundler.runOnLoadPlugins({0x140011a2840?, 0x0?, 0x0?}, {0x102c0a1c0, 0x14001240d40}, 0x1400109baa0, {0x140000f9f10, 0x14000c88168, 0x14000c88210, 0x14001240d20, ...}, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:1072 +0x9cc
github.com/evanw/esbuild/internal/bundler.parseFile({{0x102c0a1c0, 0x14001240d40}, {0x140000f9f10, 0x14000c88168, 0x14000c88210, 0x14001240d20, 0x6, 0x140010f6930}, 0x14002267208, 0x1400109baa0, ...})
	github.com/evanw/esbuild/internal/bundler/bundler.go:162 +0x1f0
created by github.com/evanw/esbuild/internal/bundler.(*scanner).maybeParseFile in goroutine 451
	github.com/evanw/esbuild/internal/bundler/bundler.go:1512 +0xa0c

goroutine 49 [chan receive, 8 minutes]:
main.(*serviceType).sendRequest(0x140000ea2d0, {0x102b81d60, 0x140000ea930})
	github.com/evanw/esbuild/cmd/esbuild/service.go:192 +0x138
main.(*serviceType).convertPlugins.func2.2()
	github.com/evanw/esbuild/cmd/esbuild/service.go:944 +0x100
github.com/evanw/esbuild/pkg/api.(*pluginImpl).onStart-fm.(*pluginImpl).onStart.func1()
	github.com/evanw/esbuild/pkg/api/api_impl.go:1843 +0x34
github.com/evanw/esbuild/internal/bundler.ScanBundle.func1({{0x102a50abf, 0x12}, {0x1400020e420, 0x1, 0x1}, {0x14000260b40, 0x1, 0x1}, {0x14000260ba0, 0x1, ...}}, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:1286 +0x7c
created by github.com/evanw/esbuild/internal/bundler.ScanBundle in goroutine 19
	github.com/evanw/esbuild/internal/bundler/bundler.go:1285 +0xb4c

goroutine 19 [semacquire, 8 minutes]:
sync.runtime_Semacquire(0x1400031c380?)
	runtime/sema.go:71 +0x2c
sync.(*WaitGroup).Wait(0x14000146590)
	sync/waitgroup.go:118 +0x74
github.com/evanw/esbuild/internal/bundler.ScanBundle(_, {_, _, _, _, _, _}, {_, _}, _, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:1369 +0x6c4
github.com/evanw/esbuild/pkg/api.rebuildImpl({0x14000200420, {0x1400020e498, 0x1, 0x1}, {0x0, 0x0, 0x0}, {0x0, 0x1, 0x2, ...}, ...}, ...)
	github.com/evanw/esbuild/pkg/api/api_impl.go:1479 +0x1f8
github.com/evanw/esbuild/pkg/api.(*internalContext).rebuild(_)
	github.com/evanw/esbuild/pkg/api/api_impl.go:998 +0x2cc
github.com/evanw/esbuild/pkg/api.(*internalContext).Rebuild(0x1400027c508?)
	github.com/evanw/esbuild/pkg/api/api_impl.go:1059 +0x3c
main.(*serviceType).handleIncomingPacket.func5()
	github.com/evanw/esbuild/cmd/esbuild/service.go:293 +0xa0
created by main.(*serviceType).handleIncomingPacket in goroutine 1
	github.com/evanw/esbuild/cmd/esbuild/service.go:290 +0x12b0

goroutine 14 [chan send, 8 minutes]:
github.com/evanw/esbuild/internal/bundler.ScanBundle.func2()
	github.com/evanw/esbuild/internal/bundler/bundler.go:1320 +0x23c
created by github.com/evanw/esbuild/internal/bundler.ScanBundle in goroutine 19
	github.com/evanw/esbuild/internal/bundler/bundler.go:1318 +0x6bc

goroutine 1096 [chan receive, 8 minutes]:
main.(*serviceType).sendRequest(0x140000ea2d0, {0x102b81d60, 0x14006b15e60})
	github.com/evanw/esbuild/cmd/esbuild/service.go:192 +0x138
main.(*serviceType).convertPlugins.func2.4({{0x1400b552140, 0x91}, {0x102a473ef, 0x4}, {0x0, 0x0}, {0x0, 0x0}, 0x0})
	github.com/evanw/esbuild/cmd/esbuild/service.go:1069 +0x634
github.com/evanw/esbuild/pkg/api.(*pluginImpl).onLoad.func1({{0x0, 0x0}, {{0x1400b552140, 0x91}, {0x102a473ef, 0x4}, {0x0, 0x0}, {{0x0, 0x0}}, ...}})
	github.com/evanw/esbuild/pkg/api/api_impl.go:1992 +0x130
github.com/evanw/esbuild/internal/bundler.runOnLoadPlugins({0x1400016b8c0?, 0x140021d1f88?, 0x10262e1bc?}, {0x102c0a1c0, 0x14001192ae0}, 0x14001590fc0, {0x14001c2c380, 0x14000c88858, 0x14000c88870, 0x14001192ac0, ...}, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:1072 +0x9cc
github.com/evanw/esbuild/internal/bundler.parseFile({{0x102c0a1c0, 0x14001192ae0}, {0x14001c2c380, 0x14000c88858, 0x14000c88870, 0x14001192ac0, 0x6, 0x14000e7ca80}, 0x14001f40d88, 0x14001590fc0, ...})
	github.com/evanw/esbuild/internal/bundler/bundler.go:162 +0x1f0
created by github.com/evanw/esbuild/internal/bundler.(*scanner).maybeParseFile in goroutine 443
	github.com/evanw/esbuild/internal/bundler/bundler.go:1512 +0xa0c

goroutine 

Not really sure what else to report. Guessing it's the number of modules that causes this. Works great with Tailwind 3.x.

Looking at what the migration tool did was change our libs from this:

@config "./tailwind-component.config.js";
@tailwind components;
@tailwind utilities;

to this:

@import 'tailwindcss/utilities' layer(utilities);
@config "./tailwind-component.config.js";

And our app css from this:

@tailwind base;
@tailwind components;
@tailwind utilities;

to this:

@import 'tailwindcss';

/* You can add global styles to this file, and also import other style files */

/*
  The default border color has changed to `currentColor` in Tailwind CSS v4,
  so we've added these compatibility styles to make sure everything still
  looks the same as it did with Tailwind CSS v3.

  If we ever want to remove these styles, we need to add an explicit border
  color utility to any element that depends on these defaults.
*/
@layer base {
  *,
  ::after,
  ::before,
  ::backdrop,
  ::file-selector-button {
    border-color: var(--color-gray-200, currentColor);
  }
}

Reverting back to v3 for now.

@philipp-spiess
Copy link
Member

Hey! We haven't come across memory issues like this, thanks for reporting! It's hard to help without a reproduction or memory logs. One idea is to collect a memory trace in Node.js so we can figure out what type of variables are created that cause the memory limit to overflow.

@bjornharvold
Copy link
Author

Will see what I can do with the article you shared.

@philipp-spiess
Copy link
Member

@bjornharvold Hey! Was just wondering if you had time to look into a memory profile or if you can share the repro?

@bjornharvold
Copy link
Author

Hi @philipp-spiess

We have an outstanding ticket on our end to upgrade to 4.x.

We have been swamped with other tasks.

Will get back to this "shortly".

🙏🏻

@bjornharvold
Copy link
Author

bjornharvold commented Mar 3, 2025

Hi @philipp-spiess

I created a demo project here with Nx and Tailwind 4

https://github.com/bjornharvold/nx-tailwind-4

It contains an Nx application with an Nx buildable library. This demo works as expected and does not blow up.

I have been unable to create any sort of heap dump to investigate. Looking at the docs you shared. Here is the only thing I get when starting the app. No dump files get created.

node --heapsnapshot-signal=SIGUSR2 --abort-on-uncaught-exception ./node_modules/.bin/nx serve online-travel-agency --host=dev.wink.travel --port=4200 --ssl=true --ssl-key=./certs/dev.wink.travel-key.pem --ssl-cert=./certs/dev.wink.travel.pem --parallel --configuration=development 

> nx run online-travel-agency:serve:development --host=dev.wink.travel --port=4200 --ssl=true --ssl-key=./certs/dev.wink.travel-key.pem --ssl-cert=./certs/dev.wink.travel.pem


Warning: This is a simple server for use in testing or debugging Angular applications
locally. It hasn't been reviewed for security issues.

Binding this server to an open connection can result in compromising your application or
computer. Using a different host than the one passed to the "--host" flag might result in
websocket connection issues. You might need to use "--disable-host-check" if that's the
case.
    
Component HMR has been enabled.
If you encounter application reload issues, you can manually reload the page to bypass HMR and/or disable this feature with the `--no-hmr` command line option.
Please consider reporting any issues you encounter here: https://github.com/angular/angular-cli/issues

⠸ Building...

<--- Last few GCs --->

[19204:0x120008000]   678477 ms: Scavenge (interleaved) 4015.4 (4126.8) -> 4006.7 (4128.3) MB, pooled: 18 MB, 26.12 / 0.00 ms  (average mu = 0.170, current mu = 0.050) task; 
[19204:0x120008000]   680195 ms: Mark-Compact 4017.8 (4128.3) -> 4005.6 (4131.0) MB, pooled: 15 MB, 1650.29 / 0.00 ms  (average mu = 0.155, current mu = 0.137) task; scavenge might not succeed


<--- JS stacktrace --->

FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
----- Native stack trace -----

 1: 0x104e60374 node::OOMErrorHandler(char const*, v8::OOMDetails const&) [/opt/homebrew/Cellar/node@22/22.14.0/bin/node]
 2: 0x104ff2100 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [/opt/homebrew/Cellar/node@22/22.14.0/bin/node]
 3: 0x105195468 v8::internal::Heap::CallGCPrologueCallbacks(v8::GCType, v8::GCCallbackFlags, v8::internal::GCTracer::Scope::ScopeId) [/opt/homebrew/Cellar/node@22/22.14.0/bin/node]
 4: 0x10519f878 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags)::$_1::operator()() const [/opt/homebrew/Cellar/node@22/22.14.0/bin/node]
 5: 0x1051957a0 void heap::base::Stack::SetMarkerAndCallbackImpl<v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags)::$_1>(heap::base::Stack*, void*, void const*) [/opt/homebrew/Cellar/node@22/22.14.0/bin/node]
 6: 0x104d78028 PushAllRegistersAndIterateStack [/opt/homebrew/Cellar/node@22/22.14.0/bin/node]
 7: 0x105192ddc v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/opt/homebrew/Cellar/node@22/22.14.0/bin/node]
 8: 0x1051d5fbc v8::internal::MinorGCJob::Task::RunInternal() [/opt/homebrew/Cellar/node@22/22.14.0/bin/node]
 9: 0x104ed03e4 node::PerIsolatePlatformData::RunForegroundTask(std::__1::unique_ptr<v8::Task, std::__1::default_delete<v8::Task>>) [/opt/homebrew/Cellar/node@22/22.14.0/bin/node]
10: 0x104ed00f4 node::PerIsolatePlatformData::FlushForegroundTasksInternal() [/opt/homebrew/Cellar/node@22/22.14.0/bin/node]
11: 0x10819da74 uv__async_io [/opt/homebrew/Cellar/libuv/1.50.0/lib/libuv.1.dylib]
12: 0x1081ae01c uv__io_poll [/opt/homebrew/Cellar/libuv/1.50.0/lib/libuv.1.dylib]
13: 0x10819df08 uv_run [/opt/homebrew/Cellar/libuv/1.50.0/lib/libuv.1.dylib]
14: 0x104d7a428 node::SpinEventLoopInternal(node::Environment*) [/opt/homebrew/Cellar/node@22/22.14.0/bin/node]
15: 0x104ea7010 node::NodeMainInstance::Run(node::ExitCode*, node::Environment*) [/opt/homebrew/Cellar/node@22/22.14.0/bin/node]
16: 0x104ea6d64 node::NodeMainInstance::Run() [/opt/homebrew/Cellar/node@22/22.14.0/bin/node]
17: 0x104e20c64 node::Start(int, char**) [/opt/homebrew/Cellar/node@22/22.14.0/bin/node]
18: 0x1857a8274 start [/usr/lib/dyld]
fatal error: all goroutines are asleep - deadlock!

goroutine 1 [chan receive]:
github.com/evanw/esbuild/internal/helpers.(*ThreadSafeWaitGroup).Wait(...)
	github.com/evanw/esbuild/internal/helpers/waitgroup.go:36
main.runService.func2()
	github.com/evanw/esbuild/cmd/esbuild/service.go:114 +0x88
main.runService(0x1)
	github.com/evanw/esbuild/cmd/esbuild/service.go:160 +0x47c
main.main()
	github.com/evanw/esbuild/cmd/esbuild/main.go:241 +0x898

goroutine 7 [chan receive]:
main.runService.func1()
	github.com/evanw/esbuild/cmd/esbuild/service.go:98 +0x40
created by main.runService in goroutine 1
	github.com/evanw/esbuild/cmd/esbuild/service.go:97 +0x19c

goroutine 8 [chan receive]:
main.(*serviceType).sendRequest(0x140001662d0, {0x10097e4a0, 0x14003e20090})
	github.com/evanw/esbuild/cmd/esbuild/service.go:192 +0x138
main.runService.func3()
	github.com/evanw/esbuild/cmd/esbuild/service.go:125 +0x44
created by main.runService in goroutine 1
	github.com/evanw/esbuild/cmd/esbuild/service.go:122 +0x2e4

goroutine 767 [chan receive, 10 minutes]:
main.(*serviceType).sendRequest(0x140001662d0, {0x10097e4a0, 0x1400f23e750})
	github.com/evanw/esbuild/cmd/esbuild/service.go:192 +0x138
main.(*serviceType).convertPlugins.func2.4({{0x140022d9050, 0x8f}, {0x1008422f4, 0x4}, {0x0, 0x0}, {0x0, 0x0}, 0x0})
	github.com/evanw/esbuild/cmd/esbuild/service.go:1079 +0x634
github.com/evanw/esbuild/pkg/api.(*pluginImpl).onLoad.func1({{0x0, 0x0}, {{0x140022d9050, 0x8f}, {0x1008422f4, 0x4}, {0x0, 0x0}, {{0x0, 0x0}}, ...}})
	github.com/evanw/esbuild/pkg/api/api_impl.go:1996 +0x130
github.com/evanw/esbuild/internal/bundler.runOnLoadPlugins({0x140000eae70?, 0x0?, 0x48?}, {0x100a07540, 0x140008d0860}, 0x14000bad020, {0x14001d7a150, 0x14000c60eb8, 0x14000c60ed0, 0x140008d0840, ...}, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:1098 +0x8e0
github.com/evanw/esbuild/internal/bundler.parseFile({{0x100a07540, 0x140008d0860}, {0x14001d7a150, 0x14000c60eb8, 0x14000c60ed0, 0x140008d0840, 0x6, 0x14000700540}, 0x14000c19b08, 0x14000bad020, ...})
	github.com/evanw/esbuild/internal/bundler/bundler.go:163 +0x1f0
created by github.com/evanw/esbuild/internal/bundler.(*scanner).maybeParseFile in goroutine 280
	github.com/evanw/esbuild/internal/bundler/bundler.go:1511 +0xa0c

goroutine 81 [chan send, 10 minutes]:
github.com/evanw/esbuild/internal/bundler.ScanBundle.func2()
	github.com/evanw/esbuild/internal/bundler/bundler.go:1319 +0x23c
created by github.com/evanw/esbuild/internal/bundler.ScanBundle in goroutine 13
	github.com/evanw/esbuild/internal/bundler/bundler.go:1317 +0x6bc

goroutine 13 [semacquire, 10 minutes]:
sync.runtime_Semacquire(0x1400014f500?)
	runtime/sema.go:71 +0x2c
sync.(*WaitGroup).Wait(0x140003820a0)
	sync/waitgroup.go:118 +0x74
github.com/evanw/esbuild/internal/bundler.ScanBundle(_, {_, _, _, _, _, _}, {_, _}, _, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:1368 +0x6c4
github.com/evanw/esbuild/pkg/api.rebuildImpl({0x1400020e3c0, {0x1400020c498, 0x1, 0x1}, {0x0, 0x0, 0x0}, {0x0, 0x1, 0x2, ...}, ...}, ...)
	github.com/evanw/esbuild/pkg/api/api_impl.go:1479 +0x1f8
github.com/evanw/esbuild/pkg/api.(*internalContext).rebuild(_)
	github.com/evanw/esbuild/pkg/api/api_impl.go:998 +0x2cc
github.com/evanw/esbuild/pkg/api.(*internalContext).Rebuild(0x1400027a508?)
	github.com/evanw/esbuild/pkg/api/api_impl.go:1059 +0x3c
main.(*serviceType).handleIncomingPacket.func5()
	github.com/evanw/esbuild/cmd/esbuild/service.go:293 +0xa0
created by main.(*serviceType).handleIncomingPacket in goroutine 1
	github.com/evanw/esbuild/cmd/esbuild/service.go:290 +0x12b0

goroutine 33 [chan receive, 10 minutes]:
main.(*serviceType).sendRequest(0x140001662d0, {0x10097e4a0, 0x14000416030})
	github.com/evanw/esbuild/cmd/esbuild/service.go:192 +0x138
main.(*serviceType).convertPlugins.func2.2()
	github.com/evanw/esbuild/cmd/esbuild/service.go:954 +0x100
github.com/evanw/esbuild/pkg/api.(*pluginImpl).onStart-fm.(*pluginImpl).onStart.func1()
	github.com/evanw/esbuild/pkg/api/api_impl.go:1847 +0x34
github.com/evanw/esbuild/internal/bundler.ScanBundle.func1({{0x10084ba5f, 0x12}, {0x1400020c420, 0x1, 0x1}, {0x14000260cc0, 0x1, 0x1}, {0x14000260d20, 0x1, ...}}, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:1285 +0x7c
created by github.com/evanw/esbuild/internal/bundler.ScanBundle in goroutine 13
	github.com/evanw/esbuild/internal/bundler/bundler.go:1284 +0xb4c

goroutine 1111 [chan receive, 10 minutes]:
main.(*serviceType).sendRequest(0x140001662d0, {0x10097e4a0, 0x1400e68c270})
	github.com/evanw/esbuild/cmd/esbuild/service.go:192 +0x138
main.(*serviceType).convertPlugins.func2.4({{0x14009072140, 0x95}, {0x1008422f4, 0x4}, {0x0, 0x0}, {0x0, 0x0}, 0x0})
	github.com/evanw/esbuild/cmd/esbuild/service.go:1079 +0x634
github.com/evanw/esbuild/pkg/api.(*pluginImpl).onLoad.func1({{0x0, 0x0}, {{0x14009072140, 0x95}, {0x1008422f4, 0x4}, {0x0, 0x0}, {{0x0, 0x0}}, ...}})
	github.com/evanw/esbuild/pkg/api/api_impl.go:1996 +0x130
github.com/evanw/esbuild/internal/bundler.runOnLoadPlugins({0x14001196420?, 0x14004587f20?, 0x1?}, {0x100a07540, 0x1400132a840}, 0x140004a7920, {0x1400038a540, 0x14000eee990, 0x14000eee9a8, 0x1400132a820, ...}, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:1098 +0x8e0
github.com/evanw/esbuild/internal/bundler.parseFile({{0x100a07540, 0x1400132a840}, {0x1400038a540, 0x14000eee990, 0x14000eee9a8, 0x1400132a820, 0x6, 0x140008f14a0}, 0x14001ef0d88, 0x140004a7920, ...})
	github.com/evanw/esbuild/internal/bundler/bundler.go:163 +0x1f0
created by github.com/evanw/esbuild/internal/bundler.(*scanner).maybeParseFile in goroutine 370
	github.com/evanw/esbuild/internal/bundler/bundler.go:1511 +0xa0c

goroutine 1112 [chan receive, 10 minutes]:
main.(*serviceType).sendRequest(0x140001662d0, {0x10097e4a0, 0x1400e68c2d0})
	github.com/evanw/esbuild/cmd/esbuild/service.go:192 +0x138
main.(*serviceType).convertPlugins.func2.4({{0x1400d3a7bc0, 0x5d}, {0x1008422f4, 0x4}, {0x0, 0x0}, {0x0, 0x0}, 0x0})
	github.com/evanw/esbuild/cmd/esbuild/service.go:1079 +0x634
github.com/evanw/esbuild/pkg/api.(*pluginImpl).onLoad.func1({{0x0, 0x0}, {{0x1400d3a7bc0, 0x5d}, {0x1008422f4, 0x4}, {0x0, 0x0}, {{0x0, 0x0}}, ...}})
	github.com/evanw/esbuild/pkg/api/api_impl.go:1996 +0x130
github.com/evanw/esbuild/internal/bundler.runOnLoadPlugins({0x14001222000?, 0x0?, 0x4c?}, {0x100a07540, 0x14000a60400}, 0x1400020ed80, {0x140018b01c0, 0x14000826a20, 0x14000826a38, 0x14000a603e0, ...}, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:1098 +0x8e0
github.com/evanw/esbuild/internal/bundler.parseFile({{0x100a07540, 0x14000a60400}, {0x140018b01c0, 0x14000826a20, 0x14000826a38, 0x14000a603e0, 0x6, 0x14001200300}, 0x14001b7fb08, 0x1400020ed80, ...})
	github.com/evanw/esbuild/internal/bundler/bundler.go:163 +0x1f0
created by github.com/evanw/esbuild/internal/bundler.(*scanner).maybeParseFile in goroutine 304
	github.com/evanw/esbuild/internal/bundler/bundler.go:1511 +0xa0c

goroutine 778 [chan receive, 10 minutes]:
main.(*serviceType).sendRequest(0x140001662d0, {0x10097e4a0, 0x1400468d6b0})
	github.com/evanw/esbuild/cmd/esbuild/service.go:192 +0x138
main.(*serviceType).convertPlugins.func2.4({{0x14003cf19e0, 0x87}, {0x1008422f4, 0x4}, {0x0, 0x0}, {0x0, 0x0}, 0x0})
	github.com/evanw/esbuild/cmd/esbuild/service.go:1079 +0x634
github.com/evanw/esbuild/pkg/api.(*pluginImpl).onLoad.func1({{0x0, 0x0}, {{0x14003cf19e0, 0x87}, {0x1008422f4, 0x4}, {0x0, 0x0}, {{0x0, 0x0}}, ...}})
	github.com/evanw/esbuild/pkg/api/api_impl.go:1996 +0x130
github.com/evanw/esbuild/internal/bundler.runOnLoadPlugins({0x140000eb080?, 0x0?, 0x0?}, {0x100a07540, 0x140005a6300}, 0x14000c58360, {0x14001f5c380, 0x14001436a80, 0x14001436a98, 0x140005a62e0, ...}, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:1098 +0x8e0
github.com/evanw/esbuild/internal/bundler.parseFile({{0x100a07540, 0x140005a6300}, {0x14001f5c380, 0x14001436a80, 0x14001436a98, 0x140005a62e0, 0x6, 0x14000b8b2c0}, 0x14001ed5b08, 0x14000c58360, ...})
	github.com/evanw/esbuild/internal/bundler/bundler.go:163 +0x1f0
created by github.com/evanw/esbuild/internal/bundler.(*scanner).maybeParseFile in goroutine 288
	github.com/evanw/esbuild/internal/bundler/bundler.go:1511 +0xa0c

goroutine 996 [chan receive, 10 minutes]:
main.(*serviceType).sendRequest(0x140001662d0, {0x10097e4a0, 0x14009bcab70})
	github.com/evanw/esbuild/cmd/esbuild/service.go:192 +0x138
main.(*serviceType).convertPlugins.func2.4({{0x140041cdd80, 0x7c}, {0x1008422f4, 0x4}, {0x0, 0x0}, {0x0, 0x0}, 0x0})
	github.com/evanw/esbuild/cmd/esbuild/service.go:1079 +0x634
github.com/evanw/esbuild/pkg/api.(*pluginImpl).onLoad.func1({{0x0, 0x0}, {{0x140041cdd80, 0x7c}, {0x1008422f4, 0x4}, {0x0, 0x0}, {{0x0, 0x0}}, ...}})
	github.com/evanw/esbuild/pkg/api/api_impl.go:1996 +0x130
github.com/evanw/esbuild/internal/bundler.runOnLoadPlugins({0x14000f12580?, 0x0?, 0x50?}, {0x100a07540, 0x14000532600}, 0x14000d89b60, {0x14000179f10, 0x14000f16a80, 0x14000f16a98, 0x140005325e0, ...}, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:1098 +0x8e0
github.com/evanw/esbuild/internal/bundler.parseFile({{0x100a07540, 0x14000532600}, {0x14000179f10, 0x14000f16a80, 0x14000f16a98, 0x140005325e0, 0x6, 0x14000ceb170}, 0x14001e57208, 0x14000d89b60, ...})
	github.com/evanw/esbuild/internal/bundler/bundler.go:163 +0x1f0
created by github.com/evanw/esbuild/internal/bundler.(*scanner).maybeParseFile in goroutine 335
	github.com/evanw/esbuild/internal/bundler/bundler.go:1511 +0xa0c

goroutine 768 [chan receive, 10 minutes]:
main.(*serviceType).sendRequest(0x140001662d0, {0x10097e4a0, 0x1400f23e7b0})
	github.com/evanw/esbuild/cmd/esbuild/service.go:192 +0x138
main.(*serviceType).convertPlugins.func2.4({{0x14003c803c0, 0x92}, {0x1008422f4, 0x4}, {0x0, 0x0}, {0x0, 0x0}, 0x0})
	github.com/evanw/esbuild/cmd/esbuild/service.go:1079 +0x634
github.com/evanw/esbuild/pkg/api.(*pluginImpl).onLoad.func1({{0x0, 0x0}, {{0x14003c803c0, 0x92}, {0x1008422f4, 0x4}, {0x0, 0x0}, {{0x0, 0x0}}, ...}})
	github.com/evanw/esbuild/pkg/api/api_impl.go:1996 +0x130
github.com/evanw/esbuild/internal/bundler.runOnLoadPlugins({0x14000e9a4d0?, 0x0?, 0x48?}, {0x100a07540, 0x140011eb2c0}, 0x1400007b980, {0x14001b68460, 0x140011edc98, 0x140011edcb0, 0x140011eb2a0, ...}, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:1098 +0x8e0
github.com/evanw/esbuild/internal/bundler.parseFile({{0x100a07540, 0x140011eb2c0}, {0x14001b68460, 0x140011edc98, 0x140011edcb0, 0x140011eb2a0, 0x6, 0x14000f6e870}, 0x140004c3688, 0x1400007b980, ...})
	github.com/evanw/esbuild/internal/bundler/bundler.go:163 +0x1f0
created by github.com/evanw/esbuild/internal/bundler.(*scanner).maybeParseFile in goroutine 384
	github.com/evanw/esbuild/internal/bundler/bundler.go:1511 +0xa0c

goroutine 1202 [chan receive, 10 minutes]:
main.(*serviceType).sendRequest(0x140001662d0, {0x10097e4a0, 0x14016d52450})
	github.com/evanw/esbuild/cmd/esbuild/service.go:192 +0x138
main.(*serviceType).convertPlugins.func2.4({{0x140137071e0, 0xa3}, {0x1008422f4, 0x4}, {0x0, 0x0}, {0x0, 0x0}, 0x0})
	github.com/evanw/esbuild/cmd/esbuild/service.go:1079 +0x634
github.com/evanw/esbuild/pkg/api.(*pluginImpl).onLoad.func1({{0x0, 0x0}, {{0x140137071e0, 0xa3}, {0x1008422f4, 0x4}, {0x0, 0x0}, {{0x0, 0x0}}, ...}})
	github.com/evanw/esbuild/pkg/api/api_impl.go:1996 +0x130
github.com/evanw/esbuild/internal/bundler.runOnLoadPlugins({0x1400012c8f0?, 0x0?, 0x51?}, {0x100a07540, 0x140011eb380}, 0x14001434cc0, {0x14001b68540, 0x140011edd88, 0x140011edda0, 0x140011eb360, ...}, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:1098 +0x8e0
github.com/evanw/esbuild/internal/bundler.parseFile({{0x100a07540, 0x140011eb380}, {0x14001b68540, 0x140011edd88, 0x140011edda0, 0x140011eb360, 0x6, 0x140006c4030}, 0x1400078d208, 0x14001434cc0, ...})
	github.com/evanw/esbuild/internal/bundler/bundler.go:163 +0x1f0
created by github.com/evanw/esbuild/internal/bundler.(*scanner).maybeParseFile in goroutine 372
	github.com/evanw/esbuild/internal/bundler/bundler.go:1511 +0xa0c

goroutine 1120 [chan receive, 10 minutes]:
main.(*serviceType).sendRequest(0x140001662d0, {0x10097e4a0, 0x14016d523f0})
	github.com/evanw/esbuild/cmd/esbuild/service.go:192 +0x138
main.(*serviceType).convertPlugins.func2.4({{0x14013d61a70, 0x86}, {0x1008422f4, 0x4}, {0x0, 0x0}, {0x0, 0x0}, 0x0})
	github.com/evanw/esbuild/cmd/esbuild/service.go:1079 +0x634
github.com/evanw/esbuild/pkg/api.(*pluginImpl).onLoad.func1({{0x0, 0x0}, {{0x14013d61a70, 0x86}, {0x1008422f4, 0x4}, {0x0, 0x0}, {{0x0, 0x0}}, ...}})
	github.com/evanw/esbuild/pkg/api/api_impl.go:1996 +0x130
github.com/evanw/esbuild/internal/bundler.runOnLoadPlugins({0x14000f12790?, 0x0?, 0x0?}, {0x100a07540, 0x140011eb3e0}, 0x1400007a9c0, {0x14001b685b0, 0x140011ede00, 0x140011ede18, 0x140011eb3c0, ...}, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:1098 +0x8e0
github.com/evanw/esbuild/internal/bundler.parseFile({{0x100a07540, 0x140011eb3e0}, {0x14001b685b0, 0x140011ede00, 0x140011ede18, 0x140011eb3c0, 0x6, 0x140014abef0}, 0x140015d0008, 0x1400007a9c0, ...})
	github.com/evanw/esbuild/internal/bundler/bundler.go:163 +0x1f0
created by github.com/evanw/esbuild/internal/bundler.(*scanner).maybeParseFile in goroutine 344
	github.com/evanw/esbuild/internal/bundler/bundler.go:1511 +0xa0c

goroutine 326 [chan receive, 10 minutes]:
github.com/evanw/esbuild/internal/bundler.(*scanner).scanAllDependencies(0x14001d18488)
	github.com/evanw/esbuild/internal/bundler/bundler.go:2059 +0x1cc
github.com/evanw/esbuild/internal/bundler.ScanBundle(_, {_, _, _, _, _, _}, {_, _}, _, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:1388 +0x854
github.com/evanw/esbuild/pkg/api.rebuildImpl({0x14000d89140, {0x14000ad73e0, 0x1, 0x1}, {0x0, 0x0, 0x0}, {0x0, 0x1, 0x2, ...}, ...}, ...)
	github.com/evanw/esbuild/pkg/api/api_impl.go:1479 +0x1f8
github.com/evanw/esbuild/pkg/api.(*internalContext).rebuild(_)
	github.com/evanw/esbuild/pkg/api/api_impl.go:998 +0x2cc
github.com/evanw/esbuild/pkg/api.(*internalContext).Rebuild(0x0?)
	github.com/evanw/esbuild/pkg/api/api_impl.go:1059 +0x3c
main.(*serviceType).handleIncomingPacket.func5()
	github.com/evanw/esbuild/cmd/esbuild/service.go:293 +0xa0
created by main.(*serviceType).handleIncomingPacket in goroutine 1
	github.com/evanw/esbuild/cmd/esbuild/service.go:290 +0x12b0

goroutine 1091 [chan receive, 10 minutes]:
main.(*serviceType).sendRequest(0x140001662d0, {0x10097e4a0, 0x140113ef410})
	github.com/evanw/esbuild/cmd/esbuild/service.go:192 +0x138
main.(*serviceType).convertPlugins.func2.4({{0x14000dd94d0, 0x86}, {0x1008422f4, 0x4}, {0x0, 0x0}, {0x0, 0x0}, 0x0})
	github.com/evanw/esbuild/cmd/esbuild/service.go:1079 +0x634
github.com/evanw/esbuild/pkg/api.(*pluginImpl).onLoad.func1({{0x0, 0x0}, {{0x14000dd94d0, 0x86}, {0x1008422f4, 0x4}, {0x0, 0x0}, {{0x0, 0x0}}, ...}})
	github.com/evanw/esbuild/pkg/api/api_impl.go:1996 +0x130
github.com/evanw/esbuild/internal/bundler.runOnLoadPlugins({0x1400023bb80?, 0x0?, 0x4d?}, {0x100a07540, 0x140008d06e0}, 0x14000c81680, {0x140002230a0, 0x14000c60cc0, 0x14000c60cd8, 0x140008d06c0, ...}, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:1098 +0x8e0
github.com/evanw/esbuild/internal/bundler.parseFile({{0x100a07540, 0x140008d06e0}, {0x140002230a0, 0x14000c60cc0, 0x14000c60cd8, 0x140008d06c0, 0x6, 0x14000b9fec0}, 0x14001d5e008, 0x14000c81680, ...})
	github.com/evanw/esbuild/internal/bundler/bundler.go:163 +0x1f0
created by github.com/evanw/esbuild/internal/bundler.(*scanner).maybeParseFile in goroutine 321
	github.com/evanw/esbuild/internal/bundler/bundler.go:1511 +0xa0c

goroutine 1003 [chan receive, 10 minutes]:
main.(*serviceType).sendRequest(0x140001662d0, {0x10097e4a0, 0x14013ee69f0})
	github.com/evanw/esbuild/cmd/esbuild/service.go:192 +0x138
main.(*serviceType).convertPlugins.func2.4({{0x1400f64f700, 0x7d}, {0x1008422f4, 0x4}, {0x0, 0x0}, {0x0, 0x0}, 0x0})
	github.com/evanw/esbuild/cmd/esbuild/service.go:1079 +0x634
github.com/evanw/esbuild/pkg/api.(*pluginImpl).onLoad.func1({{0x0, 0x0}, {{0x1400f64f700, 0x7d}, {0x1008422f4, 0x4}, {0x0, 0x0}, {{0x0, 0x0}}, ...}})
	github.com/evanw/esbuild/pkg/api/api_impl.go:1996 +0x130
github.com/evanw/esbuild/internal/bundler.runOnLoadPlugins({0x14000fae000?, 0x0?, 0x0?}, {0x100a07540, 0x140011eaf20}, 0x14000fa8000, {0x14001f5c000, 0x140013b88a0, 0x140013b88b8, 0x140011eaf00, ...}, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:1098 +0x8e0
github.com/evanw/esbuild/internal/bundler.parseFile({{0x100a07540, 0x140011eaf20}, {0x14001f5c000, 0x140013b88a0, 0x140013b88b8, 0x140011eaf00, 0x6, 0x14000f90a50}, 0x14002155688, 0x14000fa8000, ...})
	github.com/evanw/esbuild/internal/bundler/bundler.go:163 +0x1f0
created by github.com/evanw/esbuild/internal/bundler.(*scanner).maybeParseFile in goroutine 307
	github.com/evanw/esbuild/internal/bundler/bundler.go:1511 +0xa0c

goroutine 1065 [chan receive, 10 minutes]:
main.(*serviceType).sendRequest(0x140001662d0, {0x10097e4a0, 0x1400faca690})
	github.com/evanw/esbuild/cmd/esbuild/service.go:192 +0x138
main.(*serviceType).convertPlugins.func2.4({{0x1400a9b4e80, 0x80}, {0x1008422f4, 0x4}, {0x0, 0x0}, {0x0, 0x0}, 0x0})
	github.com/evanw/esbuild/cmd/esbuild/service.go:1079 +0x634
github.com/evanw/esbuild/pkg/api.(*pluginImpl).onLoad.func1({{0x0, 0x0}, {{0x1400a9b4e80, 0x80}, {0x1008422f4, 0x4}, {0x0, 0x0}, {{0x0, 0x0}}, ...}})
	github.com/evanw/esbuild/pkg/api/api_impl.go:1996 +0x130
github.com/evanw/esbuild/internal/bundler.runOnLoadPlugins({0x14001488000?, 0x0?, 0x45?}, {0x100a07540, 0x140011eaf60}, 0x14000ac8900, {0x14001f5c070, 0x140013b8900, 0x140013b8918, 0x140011eaf40, ...}, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:1098 +0x8e0
github.com/evanw/esbuild/internal/bundler.parseFile({{0x100a07540, 0x140011eaf60}, {0x14001f5c070, 0x140013b8900, 0x140013b8918, 0x140011eaf40, 0x6, 0x140012ed4a0}, 0x14000c18908, 0x14000ac8900, ...})
	github.com/evanw/esbuild/internal/bundler/bundler.go:163 +0x1f0
created by github.com/evanw/esbuild/internal/bundler.(*scanner).maybeParseFile in goroutine 308
	github.com/evanw/esbuild/internal/bundler/bundler.go:1511 +0xa0c

goroutine 330 [chan receive, 10 minutes]:
github.com/evanw/esbuild/internal/bundler.(*scanner).scanAllDependencies(0x14001e56908)
	github.com/evanw/esbuild/internal/bundler/bundler.go:2059 +0x1cc
github.com/evanw/esbuild/internal/bundler.ScanBundle(_, {_, _, _, _, _, _}, {_, _}, _, ...)
	github.com/evanw/esbuild/internal/bundler/bundler.go:1388 +0x854
github.com/evanw/esbuild/pkg/api.rebuildImpl({0x14000389e00, {0x140011ec4c8, 0x1, 0x1}, {0x0, 0x0, 0x0}, {0x0, 0x1, 0x2, ...}, ...}, ...)
	github.com/evanw/esbuild/pkg/api/api_impl.go:1479 +0x1f8
github.com/evanw/esbuild/pkg/api.(*internalContext).rebuild(_)
	github.com/evanw/esbuild/pkg/api/api_impl.go:998 +0x2cc
github.com/evanw/esbuild/pkg/api.(*internalContext).Rebuild(0x0?)
	github.com/evanw/esbuild/pkg/api/api_impl.go:1059 +0x3c
main.(*serviceType).handleIncomingPacket.func5()
	github.com/evanw/esbuild/cmd/esbuild/service.go:293 +0xa0
created by main.(*serviceType).handleIncomingPacket in goroutine 1
	github.com/evanw/esbuild/cmd/esbuild/service.go:290 +0x12b0

goroutine 1067 [chan receive, 10 minutes]:
main.(*serviceType).sendRequest(0x140001662d0, {0x10097e4a0, 0x1400faca750

@KianNH
Copy link

KianNH commented Apr 16, 2025

We're also hitting this during builds when using Astro and the Vite plugin very consistently - let me know if there's any way to get a better report / snapshot!

17:20:28 [build] ✓ Completed in 94.32s.

 building client (vite) 

<--- Last few GCs --->

[83244:0x120008000]   105924 ms: Mark-Compact 4020.5 (4137.8) -> 4009.6 (4140.8) MB, pooled: 0 MB, 545.17 / 0.00 ms  (average mu = 0.368, current mu = 0.067) task; scavenge might not succeed
[83244:0x120008000]   106877 ms: Mark-Compact 4026.6 (4141.1) -> 4015.1 (4144.1) MB, pooled: 0 MB, 913.33 / 0.04 ms  (average mu = 0.191, current mu = 0.042) allocation failure; scavenge might not succeed


<--- JS stacktrace --->

FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
----- Native stack trace -----

 1: 0x1020ff798 node::OOMErrorHandler(char const*, v8::OOMDetails const&) [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
 2: 0x102327d48 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, v8::OOMDetails const&) [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
 3: 0x102511fe8 v8::internal::Heap::stack() [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
 4: 0x1025103f4 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
 5: 0x102505130 v8::internal::HeapAllocator::AllocateRawWithLightRetrySlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
 6: 0x10250596c v8::internal::HeapAllocator::AllocateRawWithRetryOrFailSlowPath(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
 7: 0x1024e83e8 v8::internal::Factory::NewFillerObject(int, v8::internal::AllocationAlignment, v8::internal::AllocationType, v8::internal::AllocationOrigin) [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
 8: 0x1028eb7ac v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
 9: 0x102d6daf4 Builtins_CEntry_Return1_ArgvOnStack_NoBuiltinExit [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
10: 0x1294b4490 
11: 0x129628a0c 
12: 0x1294f0d58 
13: 0x1294f0b58 
14: 0x1294f0d58 
15: 0x1294f0c70 
16: 0x1294f0d58 
17: 0x1294f0c70 
18: 0x1294f0d58 
19: 0x12960b274 
20: 0x1294ef31c 
21: 0x102cd8ef0 Builtins_InterpreterEntryTrampoline [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
22: 0x102d15290 Builtins_AsyncFunctionAwaitResolveClosure [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
23: 0x102de04d8 Builtins_PromiseFulfillReactionJob [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
24: 0x102d05594 Builtins_RunMicrotasks [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
25: 0x102cd6af4 Builtins_JSRunMicrotasksEntry [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
26: 0x10246dd2c v8::internal::(anonymous namespace)::Invoke(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
27: 0x10246e5d0 v8::internal::(anonymous namespace)::InvokeWithTryCatch(v8::internal::Isolate*, v8::internal::(anonymous namespace)::InvokeParams const&) [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
28: 0x10246e708 v8::internal::Execution::TryRunMicrotasks(v8::internal::Isolate*, v8::internal::MicrotaskQueue*) [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
29: 0x1024992b4 v8::internal::MicrotaskQueue::RunMicrotasks(v8::internal::Isolate*) [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
30: 0x102499a98 v8::internal::MicrotaskQueue::PerformCheckpoint(v8::Isolate*) [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
31: 0x10201d994 node::InternalCallbackScope::Close() [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
32: 0x10201d3fc node::CallbackScope::~CallbackScope() [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
33: 0x1020c39e0 (anonymous namespace)::uvimpl::Work::AfterThreadPoolWork(int) [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
34: 0x1020c3dc4 node::ThreadPoolWork::ScheduleWork()::'lambda'(uv_work_s*, int)::operator()(uv_work_s*, int) const [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
35: 0x102cb2420 uv__work_done [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
36: 0x102cb612c uv__async_io [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
37: 0x102cc9d08 uv__io_poll [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
38: 0x102cb66c4 uv_run [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
39: 0x10201e4e4 node::SpinEventLoopInternal(node::Environment*) [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
40: 0x102146d60 node::NodeMainInstance::Run(node::ExitCode*, node::Environment*) [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
41: 0x102146afc node::NodeMainInstance::Run() [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
42: 0x1020bdb40 node::Start(int, char**) [/Users/kian/.nvm/versions/node/v22.12.0/bin/node]
43: 0x1830e8274 start [/usr/lib/dyld]
[1]    83227 abort      npx astro build

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants