webpack-contrib / sass-loader

Compiles Sass to CSS

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Issue with sass-embedded when the system runs out of resources

VioletFlare opened this issue · comments

Bug report

Prior to this bug report, I've opened an issue on the sass-embedded board and it was suggested that it might be related to how sass-loader handles sass-embedded.

sass/embedded-host-node#296 (comment)

I am using sass-embedded alongside sass-loader in my webpack config.
I've noticed, that when running out of memory and physical memory the dart processes throws errors and stop.

Actual Behavior

Webpack doesn't crash and exit, but there are dart errors printed out and the compilation stops.

webpack --config webpack.configs.dev.js --watch

../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22
../../runtime/bin/eventhandler_win.cc: 318: error: Failed to start read file thread 22

Expected Behavior

It was suggested that it might be due to sass-loader spawning many instances of sass-embedded, maybe sass-loader should be more conservative when using resources?

How Do We Reproduce?

This is my sass-loader config:

					{
						loader: 'sass-loader',
						options: {
							sassOptions: {
								sourceMap: true,
								includePaths: [path.resolve(__dirname, 'Develop', 'Styles'), path.resolve(__dirname, 'WebComponents')],
							},
							implementation: require('sass-embedded')
						}
					}

I run two sass-loader instances in parallel to compile two sections of a pretty big codebase of sass.

To reproduce this problem it is necessary to exceed the system memory, in my case I went above 6-8 GB out of 16 GB. It is also necessary to not have much physical memory available. I had something near 500-250 MB.

Please paste the results of npx webpack-cli info here, and mention other relevant information

I am running windows and using:

webpack 5.91.0
sass-loader 14.2.1
sass-embedded 1.77.0

npx webpack-cli info:

  System:
    OS: Windows 10 10.0.19045
    CPU: (4) x64 Intel(R) Core(TM) i7-6600U CPU @ 2.60GHz
    Memory: 7.08 GB / 15.88 GB
  Binaries:
    Node: 20.11.1 - C:\_MYSPACE\nodejs\node.EXE
    npm: 10.2.4 - C:\_MYSPACE\nodejs\npm.CMD
  Browsers:
    Edge: Chromium (124.0.2478.67)
    Internet Explorer: 11.0.19041.3636
  Packages:
    assets-webpack-plugin: ^7.1.1 => 7.1.1
    css-loader: ^6.10.0 => 6.11.0
    esbuild-loader: ^4.1.0 => 4.1.0
    fork-ts-checker-webpack-plugin: ^9.0.2 => 9.0.2
    postcss-loader: ^8.1.1 => 8.1.1
    resolve-url-loader: ^5.0.0 => 5.0.0
    sass-loader: ^14.2.1 => 14.2.1
    terser-webpack-plugin: ^5.3.10 => 5.3.10
    ts-loader: ^9.5.1 => 9.5.1
    webpack: ^5.90.3 => 5.91.0
    webpack-cli: ^5.1.4 => 5.1.4
    webpack-merge: ^5.10.0 => 5.10.0
    webpack-remove-empty-scripts: ^1.0.4 => 1.0.4

Should be fixed by #1199, please update sass-loader to the latest stable versiob, i.e. 14.2.1, if it will not fix your problem need to wait an answer from sass-embedded, so feel free to feedback

According to my webpack-cli info, I believe I have 14.2.1 installed.

That aside, I have a question,
Looking at the commit there's a comment that says it should handle multi-threading more gracefully.
Does multi-threading mean the way of using webpack when the module exports multiple configurations?

If that's it it's how I am currently using webpack for running multiple configurations.

hm, do you want to share the one instance between processes?

hm, do you want to share the one instance between processes?

I believe it is beneficial for the speed of the build to have some parallel processes running, unless it uses too many resources. I was curious about what does it mean to run sass-loader in a multithreading way. In my previous comment, I said that I am running multiple configurations in parallel, these configurations are exported and then passed to webpack as described in webpack documentation.

https://webpack.js.org/configuration/configuration-types/#exporting-multiple-configurations

Each of these configurations have sass-loader enabled. Does it mean I am already running it in a multithreaded way?

hm, I am afraid it was not easy, we need to close sass compiler, so for each webpack compier we need to create one instance, I can improve the api option (make it a function, so you can manually create one compiler and share it), also perhaps it is worth raising the issue of why a lot of resources will be needed there in sass-embedded repo