Skip to content
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

Issue with Socket.io Client using Next.js - Memory leak and JavaScript heap out of memory #4922

Open
MatheusLopesDev99 opened this issue Jan 16, 2024 · 1 comment

Comments

@MatheusLopesDev99
Copy link

MatheusLopesDev99 commented Jan 16, 2024

Describe the bug
Having a issue with memory leak in my next.js application

To Reproduce

| [19:0x3378e60] 357862272 ms: Scavenge 1971.0 (2050.2) -> 1970.5 (2050.2) MB, 9.9 / 0.0 ms  (average mu = 0.364, current mu = 0.473) allocation failure                                                                                                                                                                                                        |
| [19:0x3378e60] 357862285 ms: Scavenge 1971.2 (2050.2) -> 1970.8 (2050.2) MB, 10.4 / 0.0 ms  (average mu = 0.364, current mu = 0.473) allocation failure                                                                                                                                                                                                       |
| [19:0x3378e60] 357862298 ms: Scavenge 1971.5 (2050.2) -> 1971.1 (2050.7) MB, 9.7 / 0.0 ms  (average mu = 0.364, current mu = 0.473) allocation failure                                                                                                                                                                                                        |
|     2: debug [0x38b14fe99f11] [/usr/src/app/node_modules/debug/src/common.js:~66] [pc=0x8b66a7fb143](this=0x3a24a65001b1 <JSGlobal Object>)                                                                                                                                                                                                                   |
|     3: arguments adaptor frame: 2->0                                                                                                                                                                                                                                                                                                                          |
|     4: /* anonymous */ [0x2860d0021f79] [file:///usr/src/app/node_modules/socket.io-client/build/esm-debug/manager.js:~337] [pc=0x8b66a59a21c](this=0x2860d...                                                                                                                                                                                                |
| FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory                                                                                                                                                                                                                                                      |
|  1: 0xa1ae50 node::Abort() [node]                                                                                                                                                                                                                                                                                                                             |
|  2: 0xa1b25c node::OnFatalError(char const*, char const*) [node]                                                                                                                                                                                                                                                                                              |
|  3: 0xb9b20e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [node]                                                                                                                                                                                                                                                                    |
|  4: 0xb9b589 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [node]                                                                                                                                                                                                                                                      |
|  5: 0xd58815  [node]                                                                                                                                                                                                                                                                                                                                          |
|  6: 0xd58ea6 v8::internal::Heap::RecomputeLimits(v8::internal::GarbageCollector) [node]                                                                                                                                                                                                                                                                       |
|  7: 0xd65765 v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [node]                                                                                                                                                                                                                                         |
|  8: 0xd66615 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [node]                                                                                                                                                                                                             |
|  9: 0xd690cc v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node]                                                                                                                                                                                      |
| 10: 0xd2faeb v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [node]                                                                                                                                                                                                                           |
| 11: 0x10720be v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [node]                                                                                                                                                                                                                                             |
| 12: 0x140e819  [node]                                                                                                                                                                                                                                                                                                                                         |
| [20:0x4a82e60] 358066299 ms: Scavenge 1988.6 (2061.7) -> 1983.0 (2066.2) MB, 32.2 / 0.1 ms  (average mu = 0.384, current mu = 0.485) allocation failure                                                                                                                                                                                                       |
| [20:0x4a82e60] 358066566 ms: Scavenge 1993.7 (2066.2) -> 1987.6 (2069.7) MB, 29.0 / 0.0 ms  (average mu = 0.384, current mu = 0.485) allocation failure                                                                                                                                                                                                       |
| [20:0x4a82e60] 358071582 ms: Mark-sweep 1998.3 (2069.7) -> 1953.1 (2075.0) MB, 4471.4 / 1.9 ms  (average mu = 0.353, current mu = 0.322) allocation failure scavenge might not succeed                                                                                                                                                                        |
| <--- JS stacktrace --->                                                                                                                                                                                                                                                                                                                                       |
| ==== JS stack trace =========================================                                                                                                                                                                                                                                                                                                 |
|     0: ExitFrame [pc: 0x140e819]                                                                                                                                                                                                                                                                                                                              |
| Security context: 0x20d6c9ec08d1 <JSObject>                                                                                                                                                                                                                                                                                                                   |
|     1: installListeners(aka installListeners) [0x3294e952f931] [_http_agent.js:~352] [pc=0xd60c2edc6e1](this=0x27ac0df804b1 <undefined>,0x1d9f9cee3f91 <Agent map = 0x3b6be68588f9>,0x1d9f9cee4b19 <Socket map = 0x3b6be6853309>,0x1d9f9cee4a09 <Object map = 0x904b77fd429>)                                                                                 |
|     2: addRequest [0x169037b7a3c1] [_http_agent.js:~219] [pc=0xd60c31e59c9](this=0x1d9f9cee3f91...                                                                                                                                                                                                                                                            |
| FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory                                                                                                                                                                                                                                                      |
|  1: 0xa1ae50 node::Abort() [node]                                                                                                                                                                                                                                                                                                                             |
|  2: 0xa1b25c node::OnFatalError(char const*, char const*) [node]                                                                                                                                                                                                                                                                                              |
|  3: 0xb9b20e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [node]                                                                                                                                                                                                                                                                    |
|  4: 0xb9b589 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [node]                                                                                                                                                                                                                                                      |
|  5: 0xd58815  [node]                                                                                                                                                                                                                                                                                                                                          |
|  6: 0xd58ea6 v8::internal::Heap::RecomputeLimits(v8::internal::GarbageCollector) [node]                                                                                                                                                                                                                                                                       |
|  7: 0xd65765 v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [node]                                                                                                                                                                                                                                         |
|  8: 0xd66615 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [node]                                                                                                                                                                                                             |
|  9: 0xd690cc v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node]                                                                                                                                                                                      |
| 10: 0xd2faeb v8::internal::Factory::NewFillerObject(int, bool, v8::internal::AllocationType, v8::internal::AllocationOrigin) [node]                                                                                                                                                                                                                           |
| 11: 0x10720be v8::internal::Runtime_AllocateInYoungGeneration(int, unsigned long*, v8::internal::Isolate*) [node]                                                                                                                                                                                                                                             |
| 12: 0x140e819  [node]                                                                                                                                                                                                                                                                                                                                         |
| Aborted (core dumped)                                                                                                                                                                                                                                                                                                                                         |
| [20:0x3e22e60] 358309362 ms: Scavenge 1985.7 (2050.5) -> 1985.4 (2050.5) MB, 6.7 / 0.0 ms  (average mu = 0.223, current mu = 0.001) allocation failure                                                                                                                                                                                                        |
| [20:0x3e22e60] 358309372 ms: Scavenge 1986.0 (2050.5) -> 1985.7 (2050.7) MB, 6.7 / 0.0 ms  (average mu = 0.223, current mu = 0.001) allocation failure                                                                                                                                                                                                        |
| [20:0x3e22e60] 358312945 ms: Mark-sweep 1986.3 (2050.7) -> 1951.9 (2050.7) MB, 3570.0 / 1.0 ms  (average mu = 0.280, current mu = 0.333) allocation failure scavenge might not succeed                                                                                                                                                                        |
| <--- JS stacktrace --->                                                                                                                                                                                                                                                                                                                                       |
| ==== JS stack trace =========================================                                                                                                                                                                                                                                                                                                 |
|     0: ExitFrame [pc: 0x140e819]                                                                                                                                                                                                                                                                                                                              |
| Security context: 0x1b6c7f3008d1 <JSObject>                                                                                                                                                                                                                                                                                                                   |
|     1: new constructor(aka ClientRequest) [0x29eebc492b09] [_http_client.js:~85] [pc=0x31c56432a3e4](this=0x22c3189d7b81 <ClientRequest map = 0x2f7c5c0fe509>,0x22c3189d78a9 <Object map = 0x15a257d1c9f9>,0x1f6fb17004b1 <undefined>,0x1f6fb17004b1 <undefined>)                                                                                             |
|     2: ConstructFrame [pc: 0x138f8e0]                                                                                                                                                                                                                                                                                                                         |
|     3: initAsClient(aka initAsClient) [0x824837d9e1] [/usr/src/app/no...                                                                                                                                                                                                                                                                                      |
| FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory                                                                                                                                                                                                                                                      |
|  1: 0xa1ae50 node::Abort() [node]                                                                                                                                                                                                                                                                                                                             |
|  2: 0xa1b25c node::OnFatalError(char const*, char const*) [node]                                                                                                                                                                                                                                                                                              |
|  3: 0xb9b20e v8::Utils::ReportOOMFailure(v8::internal::Isolate*, char const*, bool) [node]                                                                                                                                                                                                                                                                    |
|  4: 0xb9b589 v8::internal::V8::FatalProcessOutOfMemory(v8::internal::Isolate*, char const*, bool) [node]                                                                                                                                                                                                                                                      |
|  5: 0xd58815  [node]                                                                                                                                                                                                                                                                                                                                          |
|  6: 0xd58ea6 v8::internal::Heap::RecomputeLimits(v8::internal::GarbageCollector) [node]                                                                                                                                                                                                                                                                       |
|  7: 0xd65765 v8::internal::Heap::PerformGarbageCollection(v8::internal::GarbageCollector, v8::GCCallbackFlags) [node]                                                                                                                                                                                                                                         |
|  8: 0xd66615 v8::internal::Heap::CollectGarbage(v8::internal::AllocationSpace, v8::internal::GarbageCollectionReason, v8::GCCallbackFlags) [node]                                                                                                                                                                                                             |
|  9: 0xd690cc v8::internal::Heap::AllocateRawWithRetryOrFail(int, v8::internal::AllocationType, v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) [node]                                                                                                                                                                                      |
| 10: 0xd2fe5d v8::internal::Factory::NewFixedArrayWithFiller(v8::internal::RootIndex, int, v8::internal::Object, v8::internal::AllocationType) [node]                                                                                                                                                                                                          |
| 11: 0xd2ff50 v8::internal::Handle<v8::internal::FixedArray> v8::internal::Factory::NewFixedArrayWithMap<v8::internal::FixedArray>(v8::internal::RootIndex, int, v8::internal::AllocationType) [node]                                                                                                                                                          |
| 12: 0xf4ebd9 v8::internal::HashTable<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::New(v8::internal::Isolate*, int, v8::internal::AllocationType, v8::internal::MinimumCapacity) [node]                                                                                                                                                   |
| 13: 0xf5715e v8::internal::Dictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::Add(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NameDictionary>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails, int*) [node]                                     |
| 14: 0xf572c9 v8::internal::BaseNameDictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::AddNoUpdateNextEnumerationIndex(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NameDictionary>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails, int*) [node] |
| 15: 0xf597e3 v8::internal::BaseNameDictionary<v8::internal::NameDictionary, v8::internal::NameDictionaryShape>::Add(v8::internal::Isolate*, v8::internal::Handle<v8::internal::NameDictionary>, v8::internal::Handle<v8::internal::Name>, v8::internal::Handle<v8::internal::Object>, v8::internal::PropertyDetails, int*) [node]                             |
| 16: 0x1088bdc v8::internal::Runtime_AddDictionaryProperty(int, unsigned long*, v8::internal::Isolate*) [node]                                                                                                                                                                                                                                                 |
| 17: 0x140e819  [node]                       

All React Code

Socket.IO server version: 4.4.1

Server

const io = new Server(serverHTTP, {
  pingTimeout: 60000
});

Socket.IO client version: `x.y.z`

Client



const auth = {
  sessionID: sessao?.sessao_participante_id,
  type: "participante",
  token: process.env.NEXT_PUBLIC_TOKEN_WEBSOCKET,
  participante: user,
  webinar_id: data?.webinar_id,
  empresa_id: data?.empresa_id,
};

const socket = io(process.env.NEXT_PUBLIC_SOCKET_URL, {
  transports: ["websocket"],
  auth,
});

Expected behavior
Without memory

Platform:

  • Chrome
  • Safari

Additional context
Add any other context about the problem here.

@MatheusLopesDev99 MatheusLopesDev99 added the to triage Waiting to be triaged by a member of the team label Jan 16, 2024
@darrachequesne
Copy link
Member

Hi! Did you find something unusual in the heapdump?

@darrachequesne darrachequesne added needs investigation and removed to triage Waiting to be triaged by a member of the team labels Mar 27, 2024
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

2 participants