react-native icon indicating copy to clipboard operation
react-native copied to clipboard

Performance logger does not automatically clean up timespan object properties, resulting in stoppage of XHR requests

Open mjvestal opened this issue 2 years ago • 1 comments

Description

As previously reported here - https://github.com/facebook/react-native/issues/30288

Once the limit has been reached, no new XHR's can be made. Each will throw Property storage exceeds 196607 properties

React Native Version

0.72.6

Output of npx react-native info

info Fetching system and libraries information...
System:
  OS: macOS 13.5.2
  CPU: (10) arm64 Apple M1 Pro
  Memory: 205.81 MB / 32.00 GB
  Shell:
    version: "5.9"
    path: /bin/zsh
Binaries:
  Node:
    version: 16.16.0
    path: /usr/local/bin/node
  Yarn:
    version: 1.22.15
    path: /usr/local/bin/yarn
  npm:
    version: 8.11.0
    path: /usr/local/bin/npm
  Watchman:
    version: 2023.09.04.00
    path: /opt/homebrew/bin/watchman
Managers:
  CocoaPods:
    version: 1.11.3
    path: /Users/mvestal/.rvm/gems/ruby-3.0.0/bin/pod
SDKs:
  iOS SDK:
    Platforms:
      - DriverKit 22.4
      - iOS 16.4
      - macOS 13.3
      - tvOS 16.4
      - watchOS 9.4
  Android SDK: Not Found
IDEs:
  Android Studio: 2021.2 AI-212.5712.43.2112.8815526
  Xcode:
    version: 14.3.1/14E300c
    path: /usr/bin/xcodebuild
Languages:
  Java:
    version: 11.0.16
    path: /usr/bin/javac
  Ruby:
    version: 3.0.0
    path: /Users/mvestal/.rvm/rubies/ruby-3.0.0/bin/ruby
npmPackages:
  "@react-native-community/cli": Not Found
  react:
    installed: 18.2.0
    wanted: 18.2.0
  react-native:
    installed: 0.72.6
    wanted: 0.72.6
  react-native-macos: Not Found
npmGlobalPackages:
  "*react-native*": Not Found
Android:
  hermesEnabled: true
  newArchEnabled: false
iOS:
  hermesEnabled: true
  newArchEnabled: false

Steps to reproduce

Make 196608 XMLHttpRequests with unique URLs.

Snack, screenshot, or link to a repository

https://snack.expo.dev/R1hc74OsN

Screenshot 2023-10-24 at 4 00 07 PM

mjvestal avatar Oct 24 '23 23:10 mjvestal

I'm getting the same Property storage exceeds 196607 properties error, and saw this post. I decided to dig into XMLHttpRequest and comment out the lines that start and stop the performance logger timespans.

Even after removing the timespan entries, my app is still accumulating/leaking memory and eventually hits the 196607 property limit. Seems like there's a few different mechanisms for hitting that 196607 property limit, and the timespan thing might be a red herring.

jcarioti avatar Jun 28 '24 21:06 jcarioti