Comments (5)
Yeah, I rebased so the commit sha changed to the one you mentioned but that's the one.
from mini_racer.
Using it would therefore make low_memory_notification useless while the isolate is not in use, which appears to be an intended use-case for the method.
Correct. The original idea behind this is to repeatedly run short-lived scripts and get results, but they might accumulate garbage. In between, when memory usage gets too high, trigger libv8 GC via low mem notification.
In that specific use case this fits the bill:
In particular, doing so would cause any rb-thread calling low_memory_notification to block until other threads using the isolate have unlocked it (for JavaScript execution, this means the script has finished running).
So it seems like in that case, which is the only one where mini_racer makes use of low_memory_notification
, the following would be fine:
Normally I would simply slap a
Locker guard { isolate_info->isolate }
prior to the call
I guess the following bit of code (notably the @eval_thread
check) was supposed to sort of ensure that on the Ruby side but it's not sufficient anymore and doesn't cater for whatever libv8 is doing internally:
Lines 321 to 322 in b7fd92e
The two debug+release cases you described plus the lack of any other feature that would fit the bill seem to make it clear that v8 intents us to just use the lock guard, so let's do that.
from mini_racer.
I've done just that in ac520dd
(#284), thanks a lot!
from mini_racer.
Not 100% sure if the original issue got 100% fixed, but it looks like it (in c195239), right, @lloeki?
from mini_racer.
Fixed/Addressed in c195239, released as v0.12.0
from mini_racer.
Related Issues (20)
- After MacOS Ventura upgrade. gem install works, bundle install does not HOT 2
- Context has no Isolate available anymore HOT 3
- bundler install error HOT 5
- Installing mini_racer 0.6 on docker M1 fails with "make: printf: Argument list too long" HOT 4
- Update default branch to `main` HOT 3
- Unexpected token p in JSON at position HOT 2
- Gem::Ext::BuildError: ERROR: Failed to build gem native extension (Ruby 2.7.4) HOT 3
- Discuss: Release version 1.0.0 and manage consumer breaking version expectations HOT 3
- Node release catch-up plan HOT 42
- CI Improvements HOT 1
- Error installing mini_racer: ERROR: Failed to build gem native extension HOT 7
- Undefined Conversion
- Segmentation fault when application stops (Ruby 3.2.2, tcmalloc or jemalloc) HOT 17
- mini_racer not starting: `ZSt28__throw_bad_array_new_lengthv: symbol not found (LoadError)` HOT 9
- Suggestions for context defaults for server side rendering HOT 4
- Security guarantees? HOT 1
- mini_racer 0.12.0 Segmentation fault on x86_64-linux with libv8-node 21.7.2.0 HOT 101
- Using IO or rescuing exceptions when setting a timeout HOT 3
- mini_racer can't install on ubuntu 24 using ruby 3.2.3 and bundler 2.5.13 HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mini_racer.