react-modal: Huge memory leak with Jest/Enzyme after upgrading to react-modal 3.X
Summary:
For a while now, I’ve been unable to upgrade to react-modal 3.X in my React 16 project with Jest/Enzyme because when I run tests Node itself actually crashes and I usually have to take some fairly nuclear steps such as force-quitting the process in my activity monitor app in order to use it again. The latest 2.X release of react-modal is totally fine.
Steps to reproduce:
- Upgrade
react-modalfrom2.4.1to3.X - Run
npm run jest - First few tests may run, but eventually the process hangs, and eventually these errors start to spill out:
<--- Last few GCs --->
[46548:0x102802400] 43615 ms: Mark-sweep 1402.9 (1437.6) -> 1402.9 (1436.6) MB, 1477.5 / 0.0 ms (+ 0.0 ms in 0 steps since start of marking, biggest step 0.0 ms, walltime since start of marking 1477 ms) last resort GC in old space requested
[46548:0x102802400] 45072 ms: Mark-sweep 1402.9 (1436.6) -> 1402.9 (1436.6) MB, 1456.0 / 0.0 ms last resort GC in old space requested
<--- JS stacktrace --->
==== JS stack trace =========================================
Security context: 0x38a049725ec1 <JSObject>
1: read [/path/to/project/node_modules/react-dom/cjs/react-dom-server.node.development.js:~2206] [pc=0x181429965313](this=0x38a08a383211 <ReactDOMServerRenderer map = 0x38a00fd8cc29>,bytes=0x38a0125029a9 <Number inf>)
3: renderToStaticMarkup [/path/to/project/node_modules/react-dom/cjs/react-dom-server.node.development.js:2512] [bytecode=0x38a0...
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
1: node::Abort() [/Users/username/.nvm/versions/node/v8.9.0/bin/node]
2: node::FatalException(v8::Isolate*, v8::Local<v8::Value>, v8::Local<v8::Message>) [/Users/username/.nvm/versions/node/v8.9.0/bin/node]
3: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [/Users/username/.nvm/versions/node/v8.9.0/bin/node]
4: v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationSpace) [/Users/username/.nvm/versions/node/v8.9.0/bin/node]
5: v8::internal::Runtime_AllocateInTargetSpace(int, v8::internal::Object**, v8::internal::Isolate*) [/Users/username/.nvm/versions/node/v8.9.0/bin/node]
6: 0x18142970463d
*Note that I’ve replaced the actual path and username in this snippet.
About this issue
- Original URL
- State: open
- Created 6 years ago
- Reactions: 9
- Comments: 43
I downgrade to 2.4.2 and looks it work now. Will wait until correct fix is merged
@asborisov @rharriso Follow the react issue I’ve mention here. Many ideas/workaround have been publish there.
@diasbruno I probably can’t ~this~ until after next week. But probably soon after, I’ll get back to you next week though!
No, these tests just make sure the page responds with 200. we inject a request into the Hapi server, and looking at the response code.
Sorry, I should qualify my response a little bit - the tests don’t all pass, but they no longer crash.
@diasbruno I tried this out on my test suite. And it works!
Try to apply this patch on your project and tell me your results.
node_modules/react-dom/cjs/react-dom-server.node.development.js
Well…your test has passed. 😃
@diasbruno some more info WRT
jsdom.This issue remained with the latest version
11.6.2. I didn’t see any issues in their backlog that looked related.Here you go @diasbruno: https://github.com/ryami333/react-modal-memory-exception
This is a ‘Create React App’ web-app, where I’ve done the following:
enzyme,react-modalandenzyme-adapter-react-16.<Modal>toApp.js.renderthe ‘App’ component inApp.test.js.Simply run
yarn install && yarn test(ornpm install && npm testI suppose) to replicate.