ExoPlayer has memory leakage problem

Bug
Finally, the application went crashed with a number of out of memory exceptions, after many or several times (depending on the device performance) of mount/unmount/hot-reload operations. This only happens on ExoPlayer, not so on Android Media Player.
Here is a cut of my Android Logcat:
2022-07-14 22:13:31.287 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([3297,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":1.954}])
2022-07-14 22:13:31.288 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([4897,"onVideoEnd",null])
2022-07-14 22:13:33.027 24490-24490/? W/unknown:WrappingUtils: Don't know how to round that drawable: com.facebook.react.views.image.ReactImageDownloadListener$EmptyDrawable@56846f1
2022-07-14 22:13:33.028 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([3297,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":4.777}])
2022-07-14 22:13:33.028 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([89,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":4.134}])
2022-07-14 22:13:33.028 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([89,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":3.032}])
2022-07-14 22:13:33.028 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([3297,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":3.91}])
2022-07-14 22:13:33.028 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([3297,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":5.186}])
2022-07-14 22:13:33.028 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([4897,"onVideoProgress",{"seekableDuration":2.96,"playableDuration":2.96,"currentTime":2.971}])
2022-07-14 22:13:33.028 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([4897,"onVideoProgress",{"seekableDuration":2.96,"playableDuration":2.96,"currentTime":2.971}])
2022-07-14 22:13:33.028 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([3297,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":6.188}])
2022-07-14 22:13:33.624 24490-28550/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:33.624 24490-28550/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65548 byte allocation with 42144 free bytes and 41KB until OOM, target footprint 402653184, growth limit 402653184" (VmSize 50160224 kB)
2022-07-14 22:13:34.800 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([89,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":4.01}])
2022-07-14 22:13:35.039 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([89,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":4.211}])
2022-07-14 22:13:35.301 24490-28550/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:35.301 24490-28550/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65548 byte allocation with 3816 free bytes and 3816B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 50142736 kB)
2022-07-14 22:13:35.488 24490-28529/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:35.488 24490-28529/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65548 byte allocation with 14888 free bytes and 14KB until OOM, target footprint 402653184, growth limit 402653184" (VmSize 50142736 kB)
2022-07-14 22:13:35.829 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([4897,"onVideoProgress",{"seekableDuration":2.96,"playableDuration":2.96,"currentTime":2.971}])
2022-07-14 22:13:35.830 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([89,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":7.798}])
2022-07-14 22:13:36.422 24490-28561/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:36.423 24490-28561/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65548 byte allocation with 13472 free bytes and 13KB until OOM, target footprint 402653184, growth limit 402653184" (VmSize 50142736 kB)
2022-07-14 22:13:36.969 24490-28548/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:36.969 24490-28548/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65548 byte allocation with 14256 free bytes and 13KB until OOM, target footprint 402653184, growth limit 402653184" (VmSize 50055296 kB)
2022-07-14 22:13:37.294 24490-28545/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:37.294 24490-28545/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65548 byte allocation with 14496 free bytes and 14KB until OOM, target footprint 402653184, growth limit 402653184" (VmSize 50055296 kB)
2022-07-14 22:13:37.651 24490-28529/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:37.651 24490-28529/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65552 byte allocation with 15952 free bytes and 15KB until OOM, target footprint 402653184, growth limit 402653184" (VmSize 50055296 kB)
2022-07-14 22:13:38.289 24490-28560/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:38.290 24490-28560/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65548 byte allocation with 5184 free bytes and 5184B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 50037808 kB)
2022-07-14 22:13:38.475 24490-28529/? E/LoadTask: OutOfMemory error loading stream
    java.lang.OutOfMemoryError: Failed to allocate a 65552 byte allocation with 15952 free bytes and 15KB until OOM, target footprint 402653184, growth limit 402653184
        at com.google.android.exoplayer2.upstream.DefaultAllocator.allocate(DefaultAllocator.java:102)
        at com.google.android.exoplayer2.source.SampleQueue.preAppend(SampleQueue.java:624)
        at com.google.android.exoplayer2.source.SampleQueue.sampleData(SampleQueue.java:544)
        at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.readSample(Mp4Extractor.java:533)
        at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.read(Mp4Extractor.java:187)
        at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:898)
        at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:381)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:929)
2022-07-14 22:13:38.478 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([3297,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":2.506}])
2022-07-14 22:13:38.480 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([3297,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":5.936}])
2022-07-14 22:13:38.480 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([89,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":10.574}])
2022-07-14 22:13:38.480 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([89,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":9.702}])
2022-07-14 22:13:38.480 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([3297,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":6.611}])
2022-07-14 22:13:38.481 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([3297,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":5.186}])
2022-07-14 22:13:38.481 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([4897,"onVideoProgress",{"seekableDuration":2.96,"playableDuration":2.96,"currentTime":9.535}])
2022-07-14 22:13:38.481 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([4897,"onVideoProgress",{"seekableDuration":2.96,"playableDuration":2.96,"currentTime":9.535}])
2022-07-14 22:13:38.481 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([3297,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":7.961}])
2022-07-14 22:13:38.481 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([89,"onVideoEnd",null])
2022-07-14 22:13:38.481 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([3297,"onVideoEnd",null])
2022-07-14 22:13:38.497 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([89,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":7.934}])
2022-07-14 22:13:38.497 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([89,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":6.409}])
2022-07-14 22:13:38.497 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([4897,"onVideoProgress",{"seekableDuration":2.96,"playableDuration":2.96,"currentTime":9.535}])
2022-07-14 22:13:38.497 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([89,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":7.798}])
2022-07-14 22:13:38.497 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([4897,"onVideoEnd",null])
2022-07-14 22:13:39.205 24490-28532/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:39.205 24490-28532/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65548 byte allocation with 28200 free bytes and 27KB until OOM, target footprint 402653184, growth limit 402653184" (VmSize 50055296 kB)
2022-07-14 22:13:39.695 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([89,"onVideoEnd",null])
2022-07-14 22:13:40.407 24490-28550/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:40.407 24490-28550/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65552 byte allocation with 20984 free bytes and 20KB until OOM, target footprint 402653184, growth limit 402653184" (VmSize 50037820 kB)
2022-07-14 22:13:40.407 24490-28550/? E/LoadTask: OutOfMemory error loading stream
    java.lang.OutOfMemoryError: Failed to allocate a 65552 byte allocation with 20984 free bytes and 20KB until OOM, target footprint 402653184, growth limit 402653184
        at com.google.android.exoplayer2.upstream.DefaultAllocator.allocate(DefaultAllocator.java:102)
        at com.google.android.exoplayer2.source.SampleQueue.preAppend(SampleQueue.java:624)
        at com.google.android.exoplayer2.source.SampleQueue.sampleData(SampleQueue.java:544)
        at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.readSample(Mp4Extractor.java:533)
        at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.read(Mp4Extractor.java:187)
        at com.google.android.exoplayer2.source.ExtractorMediaPeriod$ExtractingLoadable.load(ExtractorMediaPeriod.java:898)
        at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:381)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:929)
2022-07-14 22:13:41.107 24490-28573/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:41.107 24490-28573/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65548 byte allocation with 5160 free bytes and 5160B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 49915488 kB)
2022-07-14 22:13:41.143 24490-24490/? W/unknown:ReactNative: Calling JS function after bridge has been destroyed: RCTEventEmitter.receiveEvent([3297,"onVideoProgress",{"seekableDuration":3,"playableDuration":3,"currentTime":6.703}])
2022-07-14 22:13:41.380 24490-28548/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:41.380 24490-28548/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65548 byte allocation with 4792 free bytes and 4792B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 49898000 kB)
2022-07-14 22:13:42.506 24490-28565/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:42.506 24490-28565/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65548 byte allocation with 864 free bytes and 864B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 49898000 kB)
2022-07-14 22:13:42.644 24490-28560/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:42.644 24490-28560/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65548 byte allocation with 864 free bytes and 864B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 49898000 kB)
2022-07-14 22:13:43.128 24490-28564/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:43.128 24490-28564/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65548 byte allocation with 240 free bytes and 240B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 49898000 kB)
2022-07-14 22:13:43.262 24490-28648/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:43.263 24490-28648/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 4016 byte allocation with 8 free bytes and 8B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 49898000 kB)
2022-07-14 22:13:44.489 24490-28532/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:44.489 24490-28532/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65552 byte allocation with 40 free bytes and 40B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 49880524 kB)
2022-07-14 22:13:44.925 24490-28536/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:44.926 24490-28536/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65548 byte allocation with 232 free bytes and 232B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 49880524 kB)
2022-07-14 22:13:45.062 24490-24544/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:45.062 24490-24544/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 56 byte allocation with 16 free bytes and 16B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 49880524 kB)
2022-07-14 22:13:45.604 24490-28540/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:45.604 24490-28540/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65548 byte allocation with 16 free bytes and 16B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 49880524 kB)
2022-07-14 22:13:46.175 24490-28652/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:46.175 24490-28652/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 40 byte allocation with 16 free bytes and 16B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 49880524 kB)
2022-07-14 22:13:46.392 24490-24758/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:46.392 24490-24758/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 48 byte allocation with 16 free bytes and 16B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 49880524 kB)
2022-07-14 22:13:46.794 24490-28573/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:46.794 24490-28573/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65552 byte allocation with 16 free bytes and 16B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 49880524 kB)
2022-07-14 22:13:47.650 24490-28442/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:47.651 24490-28442/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 152 byte allocation with 16 free bytes and 16B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 49880524 kB)
2022-07-14 22:13:47.987 24490-24751/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:47.987 24490-24751/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 64 byte allocation with 16 free bytes and 16B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 49880524 kB)
2022-07-14 22:13:48.804 24490-28557/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:48.804 24490-28557/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65548 byte allocation with 0 free bytes and 0B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 49880524 kB)
2022-07-14 22:13:49.100 24490-28538/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:49.100 24490-28538/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 32 byte allocation with 0 free bytes and 0B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 49880524 kB)
2022-07-14 22:13:49.685 24490-24490/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:49.685 24490-24490/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 760 byte allocation with 400 free bytes and 400B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 49845548 kB)
2022-07-14 22:13:49.825 24490-28548/? E/mypackage: [MemLeak.JavaTrack]: failed to write oom info: Operation not permitted
2022-07-14 22:13:49.825 24490-28548/? W/mypackage: Throwing OutOfMemoryError "Failed to allocate a 65552 byte allocation with 1824 free bytes and 1824B until OOM, target footprint 402653184, growth limit 402653184" (VmSize 49845548 kB)

Platform
Android Exoplayer
Environment info

React native info output:
System:
    OS: Windows 10 10.0.19043
    CPU: (8) x64 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
    Memory: 5.93 GB / 23.88 GB
  Binaries:
    Node: 16.14.2 - C:\nodejs\node.EXE
    Yarn: 1.22.18 - C:\nodejs\yarn.CMD
    npm: 8.5.0 - C:\nodejs\npm.CMD
    Watchman: Not Found
  SDKs:
    Android SDK:
      API Levels: 28, 29, 30, 31
      Build Tools: 28.0.3, 29.0.2, 29.0.3, 30.0.0, 30.0.2
      System Images: android-28 | Google Play Intel x86 Atom, android-29 | Google APIs Intel x86 Atom
      Android NDK: Not Found
    Windows SDK: Not Found
  IDEs:
    Android Studio: Not Found
    Visual Studio: 16.11.31911.196 (Visual Studio Community 2019)
  Languages:
    Java: javac 13 - C:\Program Files\Java\jdk-13\bin\javac.EXE
  npmPackages:
    @react-native-community/cli: Not Found
    react: 17.0.2 => 17.0.2
    react-native: 0.68.2 => 0.68.2
    react-native-windows: Not Found
  npmGlobalPackages:
    *react-native*: Not Found

Library version: 4.4.5 ~ 5.2.0 ~ 6.0.0-alpha0 all have this problem
Steps To Reproduce

Create a React Native project and install react-native-video
Create a Video component in App, style it as absolute and stretch(or fixed), make it autoplay and silent and playInBackground and repeat and all of the possible way to make it like a background of App View and not bother any other players or applications outside. Prepare several videos with length 1~5s. (see the demo below)
Create a state field in the App, and setInterval to update it regularly. This step is to let the Video component auto refresh many times.
Run the application in an Android device. hold on and wait... until it crashes.
...

demo:
import React from 'react';
import {Dimensions, View} from 'react-native';
import Video from 'react-native-video';

const videos = [require('./video1.mp4'), require('./video2.mp4')];
//// for production release
// const videos = [{uri:'raw/video1'}, {uri:'raw/video2'}]

export default function App() {
  const [src, setSrc] = React.useState(0);
  const [width, setWidth] = React.useState(Dimensions.get('window').width);
  const [height, setHeight] = React.useState(Dimensions.get('window').height);
  React.useEffect(() => {
    setTimeout(() => {
      setSrc((src + 1) % videos.length);
    }, 4000);
  }, [src]);

  return (
    <View
      style={{flex: 1}}
      onLayout={({nativeEvent}) => {
        setWidth(nativeEvent.layout.width);
        setHeight(nativeEvent.layout.height);
      }}>
      <Video
        source={videos[src]}
        style={[
          {
            position: 'absolute',
            top: 0,
            left: 0,
            zIndex: 1,
            width: width,
            height: height,
          },
        ]}
        resizeMode="cover"
        repeat
        allowsExternalPlayback={false}
        ignoreSilentSwitch="obey"
        mixWithOthers="mix"
        muted
        volume={0}
        selectedAudioTrack={{type: 'disabled'}}
        selectedTextTrack={{type: 'disabled'}}
        playWhenInactive
        playInBackground
        disableFocus
      />
    </View>
  );
}

Expected behaviour

Not crash!

Suppose
the reactContext in the module has been catched in unsafe ways. When the context hot changed, the module could not run correctly, but it still had some kind of references to the old reactContext and some others, that makes memory leakages and errors.

Actually, I've tried from 4.4.5 to 6.0.0-alpha0, the problem alway exists.

Hi, could you please tell me how you integrated the exoplayer in the first place? I am also using react-native-video and it is working but the loading is very slow for me. I think it is using the media player instead of the exoplayer in my case. Would like to k now how you implemented it. Thanks

@hmShuvo314 The versions before v6.0 (such as v5.x), are documented for this, see the document. You can integrate this library correctly only by following the chapter Android installation. The two integrating options in android/settings.gradle only need to complete one, and be sure to put it at the end of the file, do not put anything below.
v6.x has removed the Android Media Player, it can only and automatically use Exoplayer.

I've been having the exact same issue for quite some time. If you alternate rendering a Video and another element such as an Image infinitely, the memory eventually runs out. I've seen it crash in as little as 45 minutes with a 1 second delay between each render. This is a problem for us since our app is for digital signage so we require the ability to render multiple media types in a list.

@c-moyer It seems that I'm not in an isolated case.
Our project uses the video component as an animated background, and it switches between several video sources frequently, that causes trouble. We are using Android Media Player implementation now.

@RickoNoNo3 I haven't had a chance to review the memory profiler yet, but commenting out the following code from react-native.config.js seems to have improved performance.
// module.exports = {
//     dependencies: {
//         'react-native-video': {
//             platforms: {
//                 android: {
//                     sourceDir: '../node_modules/react-native-video/android-exoplayer',
//                 },
//             },
//         },
//     },
// };

I've had the app running now for about 36 hours alternating between two videos and an image with 1 second between each render. With exoplayer, this crashes within 45 minutes. I did notice the UI froze for a couple of minutes about 24 hours in which was odd but the app didn't crash like it usually does and I didn't receive any bugsnag notifications either. I'll try to do some more digging later this week but it seems like there's some sort of teardown that's missing which is needed for Exoplayer.

After running the app for about an hour using Exoplayer, I began getting out of memory errors. Here's a sample of my logcat:
2022-09-14 22:57:51.884 426-23477/? I/MtkOmxVdecExV4L2: [0xa7118a00] -FlushOutputPort -> mNumPendingOutput(0)
2022-09-14 22:57:51.899 426-492/? I/MtkOmxVdecExV4L2: [0xa7118a00] MtkOmxVdec::FreeBuffer all output buffers have been freed!!! signal mOutPortFreeDoneSem(1)
2022-09-14 22:57:57.368 25405-23338/com.digitalsignageplayer W/alsignageplaye: Throwing OutOfMemoryError "Failed to allocate a 65548 byte allocation with 17856 free bytes and 17KB until OOM, max allowed footprint 201326592, growth limit 201326592"
2022-09-14 22:57:57.861 23514-23542/? D/BlackbirdPluginHandler: kso device attributes: {"type":"DeviceAttributes","acceptLanguage":"en-US","apkVersion":"7.5.848.0","appVersion":"dynamic","cor":"US","deviceLocalTime":"America/Chicago","devicePartnerId":"NO_PARTNER_ID","deviceType":"AFTKA","directedId":"amzn1.account.AE3CHNEV5V52ASM2JEW3HVU22DRA","dsn":"G071R207132437JN","idfa":"03fb9eb9-3c8c-405a-976a-22eff9055cfe","launcherVersion":"639002610","optOut":false,"osVersion":"0024126400644","pconState":"0","pconViewingRestrictions":"-1","pfm":"ATVPDKIKX0DER","sha1UDID":"5f4806ce160a07799670accb9b000287302961d3","sisId":"A_riPLQ0gUegsXM-PsbbnD8","userAgent":"Dalvik/2.1.0 (Linux; U; Android 9; AFTKA Build/PS7292.2984N)"}
2022-09-14 22:57:57.988 23514-23542/? D/BlackbirdPluginHandler: kso device attributes: {"type":"DeviceAttributes","acceptLanguage":"en-US","apkVersion":"7.5.848.0","appVersion":"dynamic","cor":"US","deviceLocalTime":"America/Chicago","devicePartnerId":"NO_PARTNER_ID","deviceType":"AFTKA","directedId":"amzn1.account.AE3CHNEV5V52ASM2JEW3HVU22DRA","dsn":"G071R207132437JN","idfa":"03fb9eb9-3c8c-405a-976a-22eff9055cfe","launcherVersion":"639002610","optOut":false,"osVersion":"0024126400644","pconState":"0","pconViewingRestrictions":"-1","pfm":"ATVPDKIKX0DER","sha1UDID":"5f4806ce160a07799670accb9b000287302961d3","sisId":"A_riPLQ0gUegsXM-PsbbnD8","userAgent":"Dalvik/2.1.0 (Linux; U; Android 9; AFTKA Build/PS7292.2984N)"}
2022-09-14 22:58:01.855 25405-23338/com.digitalsignageplayer W/alsignageplaye: Throwing OutOfMemoryError "Failed to allocate a 65552 byte allocation with 13784 free bytes and 13KB until OOM, max allowed footprint 201326592, growth limit 201326592"
2022-09-14 22:58:03.672 25405-23338/com.digitalsignageplayer E/LoadTask: OutOfMemory error loading stream
      java.lang.OutOfMemoryError: Failed to allocate a 65552 byte allocation with 13784 free bytes and 13KB until OOM, max allowed footprint 201326592, growth limit 201326592
        at com.google.android.exoplayer2.upstream.DefaultAllocator.allocate(DefaultAllocator.java:102)
        at com.google.android.exoplayer2.source.SampleDataQueue.preAppend(SampleDataQueue.java:392)
        at com.google.android.exoplayer2.source.SampleDataQueue.sampleData(SampleDataQueue.java:181)
        at com.google.android.exoplayer2.source.SampleQueue.sampleData(SampleQueue.java:471)
        at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.readSample(Mp4Extractor.java:552)
        at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.read(Mp4Extractor.java:192)
        at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:982)
        at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:391)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
2022-09-14 22:58:07.705 426-492/? E/OMXNodeInstance: setParameter(0xa7118344:MTK.DECODER.AVC, OMX.google.android.index.allocateNativeHandle(0x7f20040e): Output:1 en=0) ERROR: BadParameter(0x80001005)
2022-09-14 22:58:07.705 426-29796/? I/MtkOmxVdecExV4L2: [0xa7118340] --- GetOutputPortDefinition --- (176 144 176 160 5 46096 0x7f000001), pPortDef (176 144 176 160 5 46096 0x7f000001)
2022-09-14 22:58:07.707 426-29796/? I/MtkOmxVdecExV4L2: [0xa7118340] --- GetOutputPortDefinition --- (3840 2160 3840 2176 5 12533776 0x7f000001), pPortDef (3840 2160 3840 2176 5 12533776 0x7f000001)
2022-09-14 22:58:07.824 426-29796/? I/MtkOmxVdecExV4L2: [0xa7118340] --- GetOutputPortDefinition --- (3840 2160 3840 2176 5 12533776 0x7f000001), pPortDef (3840 2160 3840 2176 5 12533776 0x7f000001)
2022-09-14 22:58:07.824 426-29796/? I/MtkOmxVdecExV4L2: [0xa7118340] --- GetOutputPortDefinition --- (3840 2160 3840 2176 5 12533776 0x7f000001), pPortDef (3840 2160 3840 2176 5 12533776 0x7f000001)
2022-09-14 22:58:08.107 426-29796/? I/MtkOmxVdecExV4L2: [0xa7118340] --- GetOutputPortDefinition --- (3840 2160 3840 2176 5 12533776 0x7f000003), pPortDef (3840 2160 3840 2176 5 12533776 0x10f)
2022-09-14 22:58:08.114 426-24163/? I/MtkOmxVdecExV4L2: [0xa7118340] [getReconfigOutputPortSetting] u4CheckBufferCount: 13, u4ChagnedDPBSize: 5, mMinUndequeuedBufs: 4, FRAMEWORK_OVERHEAD: 3, MAX_COLORCONVERT_OUTPUTBUFFER_COUNT:1
2022-09-14 22:58:08.116 426-29796/? I/MtkOmxVdecExV4L2: [0xa7118340] --- GetOutputPortDefinition --- (3840 2160 3840 2184 13 12583040 0x7f000003), pPortDef (3840 2160 3840 2184 13 12583040 0x10f)
2022-09-14 22:58:08.117 426-24162/? I/MtkOmxVdecExV4L2: [0xa7118340] --- FTBQ: mNumPendingOutput 1; mFillThisBufQ.size() 1,  CCDst: 0, CCSrc: 0
2022-09-14 22:58:08.117 426-24162/? I/MtkOmxVdecExV4L2: [0xa7118340] -FlushOutputPort -> mNumPendingOutput(0)
2022-09-14 22:58:08.117 426-29796/? I/MtkOmxVdecExV4L2: [0xa7118340] MtkOmxVdec::FreeBuffer all output buffers have been freed!!! signal mOutPortFreeDoneSem(1)
2022-09-14 22:58:08.120 426-24162/? I/MtkOmxVdecExV4L2: [0xa7118340] [getReconfigOutputPortSetting] u4CheckBufferCount: 13, u4ChagnedDPBSize: 5, mMinUndequeuedBufs: 4, FRAMEWORK_OVERHEAD: 3, MAX_COLORCONVERT_OUTPUTBUFFER_COUNT:1
2022-09-14 22:58:08.121 426-492/? I/MtkOmxVdecExV4L2: [0xa7118340] --- GetOutputPortDefinition --- (3840 2160 3840 2184 13 12583040 0x7f000003), pPortDef (3840 2160 3840 2184 13 12583040 0x10f)
2022-09-14 22:58:08.121 426-26744/? I/MtkOmxVdecExV4L2: [0xa7118340] --- GetOutputPortDefinition --- (3840 2160 3840 2184 13 12583040 0x7f000003), pPortDef (3840 2160 3840 2184 13 12583040 0x10f)
2022-09-14 22:58:09.926 426-28806/? I/MtkOmxVdecExV4L2: [0xa7118340] --- GetOutputPortDefinition --- (3840 2160 3840 2184 13 12583040 0x10f), pPortDef (3840 2160 3840 2184 13 12583040 0x10f)
2022-09-14 22:58:09.982 455-484/? I/VCodecDrv: phHandle->fgOutputEarly 0
2022-09-14 22:58:09.983 426-24162/? I/MtkOmxVdecExV4L2: [0xa7118340] --- FTBQ: mNumPendingOutput 2; mFillThisBufQ.size() 0,  CCDst: 0, CCSrc: 0
2022-09-14 22:58:09.983 455-484/? I/VCodecDrv: phHandle->fgOutputEarly 0
2022-09-14 22:58:09.989 426-24162/? I/MtkOmxVdecExV4L2: [0xa7118340] -FlushOutputPort -> mNumPendingOutput(0)
2022-09-14 22:58:10.299 455-484/? I/VCodecDrv: phHandle->fgOutputEarly 0
2022-09-14 22:58:10.300 426-24162/? I/MtkOmxVdecExV4L2: [0xa7118340] --- FTBQ: mNumPendingOutput 9; mFillThisBufQ.size() 7,  CCDst: 0, CCSrc: 0
2022-09-14 22:58:10.300 455-484/? I/VCodecDrv: phHandle->fgOutputEarly 0
2022-09-14 22:58:10.301 426-24162/? I/MtkOmxVdecExV4L2: [0xa7118340] -FlushOutputPort -> mNumPendingOutput(0)
2022-09-14 22:58:10.334 426-28806/? I/MtkOmxVdecExV4L2: [0xa7118340] MtkOmxVdec::FreeBuffer all output buffers have been freed!!! signal mOutPortFreeDoneSem(1)
2022-09-14 22:58:18.193 24380-24429/? D/BlackbirdPluginHandler: kso device attributes: {"type":"DeviceAttributes","acceptLanguage":"en-US","apkVersion":"7.5.848.0","appVersion":"dynamic","cor":"US","deviceLocalTime":"America/Chicago","devicePartnerId":"NO_PARTNER_ID","deviceType":"AFTKA","directedId":"amzn1.account.AE3CHNEV5V52ASM2JEW3HVU22DRA","dsn":"G071R207132437JN","idfa":"03fb9eb9-3c8c-405a-976a-22eff9055cfe","launcherVersion":"639002610","optOut":false,"osVersion":"0024126400644","pconState":"0","pconViewingRestrictions":"-1","pfm":"ATVPDKIKX0DER","sha1UDID":"5f4806ce160a07799670accb9b000287302961d3","sisId":"A_riPLQ0gUegsXM-PsbbnD8","userAgent":"Dalvik/2.1.0 (Linux; U; Android 9; AFTKA Build/PS7292.2984N)"}
2022-09-14 22:58:18.201 24380-24429/? D/BlackbirdPluginHandler: kso device attributes: {"type":"DeviceAttributes","acceptLanguage":"en-US","apkVersion":"7.5.848.0","appVersion":"dynamic","cor":"US","deviceLocalTime":"America/Chicago","devicePartnerId":"NO_PARTNER_ID","deviceType":"AFTKA","directedId":"amzn1.account.AE3CHNEV5V52ASM2JEW3HVU22DRA","dsn":"G071R207132437JN","idfa":"03fb9eb9-3c8c-405a-976a-22eff9055cfe","launcherVersion":"639002610","optOut":false,"osVersion":"0024126400644","pconState":"0","pconViewingRestrictions":"-1","pfm":"ATVPDKIKX0DER","sha1UDID":"5f4806ce160a07799670accb9b000287302961d3","sisId":"A_riPLQ0gUegsXM-PsbbnD8","userAgent":"Dalvik/2.1.0 (Linux; U; Android 9; AFTKA Build/PS7292.2984N)"}
2022-09-14 22:58:19.964 25405-24374/com.digitalsignageplayer W/alsignageplaye: Throwing OutOfMemoryError "Failed to allocate a 65548 byte allocation with 53152 free bytes and 51KB until OOM, max allowed footprint 201326592, growth limit 201326592"
2022-09-14 22:58:23.995 25405-24374/com.digitalsignageplayer W/alsignageplaye: Throwing OutOfMemoryError "Failed to allocate a 65552 byte allocation with 53392 free bytes and 52KB until OOM, max allowed footprint 201326592, growth limit 201326592"
2022-09-14 22:58:24.067 25405-24374/com.digitalsignageplayer E/LoadTask: OutOfMemory error loading stream
      java.lang.OutOfMemoryError: Failed to allocate a 65552 byte allocation with 53392 free bytes and 52KB until OOM, max allowed footprint 201326592, growth limit 201326592
        at com.google.android.exoplayer2.upstream.DefaultAllocator.allocate(DefaultAllocator.java:102)
        at com.google.android.exoplayer2.source.SampleDataQueue.preAppend(SampleDataQueue.java:392)
        at com.google.android.exoplayer2.source.SampleDataQueue.sampleData(SampleDataQueue.java:181)
        at com.google.android.exoplayer2.source.SampleQueue.sampleData(SampleQueue.java:471)
        at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.readSample(Mp4Extractor.java:552)
        at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.read(Mp4Extractor.java:192)
        at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:982)
        at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:391)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
2022-09-14 22:58:24.913 426-28806/? E/OMXNodeInstance: setParameter(0xa7118544:MTK.DECODER.AVC, OMX.google.android.index.allocateNativeHandle(0x7f20040e): Output:1 en=0) ERROR: BadParameter(0x80001005)
2022-09-14 22:58:24.913 426-28806/? I/MtkOmxVdecExV4L2: [0xa7118540] --- GetOutputPortDefinition --- (176 144 176 160 5 46096 0x7f000001), pPortDef (176 144 176 160 5 46096 0x7f000001)
2022-09-14 22:58:24.915 426-28806/? I/MtkOmxVdecExV4L2: [0xa7118540] --- GetOutputPortDefinition --- (3840 2160 3840 2176 5 12533776 0x7f000001), pPortDef (3840 2160 3840 2176 5 12533776 0x7f000001)
2022-09-14 22:58:25.019 426-492/? I/MtkOmxVdecExV4L2: [0xa7118540] --- GetOutputPortDefinition --- (3840 2160 3840 2176 5 12533776 0x7f000001), pPortDef (3840 2160 3840 2176 5 12533776 0x7f000001)
2022-09-14 22:58:25.020 426-492/? I/MtkOmxVdecExV4L2: [0xa7118540] --- GetOutputPortDefinition --- (3840 2160 3840 2176 5 12533776 0x7f000001), pPortDef (3840 2160 3840 2176 5 12533776 0x7f000001)
2022-09-14 22:58:25.237 426-24827/? I/MtkOmxVdecExV4L2: [0xa7118540] [getReconfigOutputPortSetting] u4CheckBufferCount: 13, u4ChagnedDPBSize: 5, mMinUndequeuedBufs: 4, FRAMEWORK_OVERHEAD: 3, MAX_COLORCONVERT_OUTPUTBUFFER_COUNT:1
2022-09-14 22:58:25.239 426-492/? I/MtkOmxVdecExV4L2: [0xa7118540] --- GetOutputPortDefinition --- (3840 2160 3840 2184 13 12583040 0x7f000003), pPortDef (3840 2160 3840 2184 13 12583040 0x10f)
2022-09-14 22:58:25.240 426-492/? I/MtkOmxVdecExV4L2: [0xa7118540] --- GetOutputPortDefinition --- (3840 2160 3840 2184 13 12583040 0x7f000003), pPortDef (3840 2160 3840 2184 13 12583040 0x10f)
2022-09-14 22:58:25.241 426-24826/? I/MtkOmxVdecExV4L2: [0xa7118540] --- FTBQ: mNumPendingOutput 1; mFillThisBufQ.size() 1,  CCDst: 0, CCSrc: 0
2022-09-14 22:58:25.241 426-24826/? I/MtkOmxVdecExV4L2: [0xa7118540] -FlushOutputPort -> mNumPendingOutput(0)
2022-09-14 22:58:25.242 426-26744/? I/MtkOmxVdecExV4L2: [0xa7118540] MtkOmxVdec::FreeBuffer all output buffers have been freed!!! signal mOutPortFreeDoneSem(1)
2022-09-14 22:58:25.242 426-24826/? I/MtkOmxVdecExV4L2: [0xa7118540] [getReconfigOutputPortSetting] u4CheckBufferCount: 13, u4ChagnedDPBSize: 5, mMinUndequeuedBufs: 4, FRAMEWORK_OVERHEAD: 3, MAX_COLORCONVERT_OUTPUTBUFFER_COUNT:1
2022-09-14 22:58:25.243 426-26744/? I/MtkOmxVdecExV4L2: [0xa7118540] --- GetOutputPortDefinition --- (3840 2160 3840 2184 13 12583040 0x7f000003), pPortDef (3840 2160 3840 2184 13 12583040 0x10f)
2022-09-14 22:58:25.243 426-26744/? I/MtkOmxVdecExV4L2: [0xa7118540] --- GetOutputPortDefinition --- (3840 2160 3840 2184 13 12583040 0x7f000003), pPortDef (3840 2160 3840 2184 13 12583040 0x10f)
2022-09-14 22:58:25.303 426-26744/? I/MtkOmxVdecExV4L2: [0xa7118540] --- GetOutputPortDefinition --- (3840 2160 3840 2184 13 12583040 0x10f), pPortDef (3840 2160 3840 2184 13 12583040 0x10f)
2022-09-14 22:58:25.321 25405-24373/com.digitalsignageplayer E/ExoPlayerImplInternal: Source error
      com.google.android.exoplayer2.upstream.Loader$UnexpectedLoaderException: Unexpected OutOfMemoryError: Failed to allocate a 65552 byte allocation with 53392 free bytes and 52KB until OOM, max allowed footprint 201326592, growth limit 201326592
        at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:421)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
     Caused by: java.lang.OutOfMemoryError: Failed to allocate a 65552 byte allocation with 53392 free bytes and 52KB until OOM, max allowed footprint 201326592, growth limit 201326592
        at com.google.android.exoplayer2.upstream.DefaultAllocator.allocate(DefaultAllocator.java:102)
        at com.google.android.exoplayer2.source.SampleDataQueue.preAppend(SampleDataQueue.java:392)
        at com.google.android.exoplayer2.source.SampleDataQueue.sampleData(SampleDataQueue.java:181)
        at com.google.android.exoplayer2.source.SampleQueue.sampleData(SampleQueue.java:471)
        at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.readSample(Mp4Extractor.java:552)
        at com.google.android.exoplayer2.extractor.mp4.Mp4Extractor.read(Mp4Extractor.java:192)
        at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:982)
        at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:391)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:764)
2022-09-14 22:58:25.322 455-484/? I/VCodecDrv: phHandle->fgOutputEarly 0
2022-09-14 22:58:25.323 426-24826/? I/MtkOmxVdecExV4L2: [0xa7118540] --- FTBQ: mNumPendingOutput 2; mFillThisBufQ.size() 0,  CCDst: 0, CCSrc: 0
2022-09-14 22:58:25.323 455-484/? I/VCodecDrv: phHandle->fgOutputEarly 0
2022-09-14 22:58:25.325 426-24826/? I/MtkOmxVdecExV4L2: [0xa7118540] -FlushOutputPort -> mNumPendingOutput(0)
2022-09-14 22:58:25.688 455-484/? I/VCodecDrv: phHandle->fgOutputEarly 0
2022-09-14 22:58:25.689 426-24826/? I/MtkOmxVdecExV4L2: [0xa7118540] --- FTBQ: mNumPendingOutput 9; mFillThisBufQ.size() 8,  CCDst: 0, CCSrc: 0
2022-09-14 22:58:25.689 455-484/? I/VCodecDrv: phHandle->fgOutputEarly 0
2022-09-14 22:58:25.691 426-24826/? I/MtkOmxVdecExV4L2: [0xa7118540] -FlushOutputPort -> mNumPendingOutput(0)
2022-09-14 22:58:25.707 426-29796/? I/MtkOmxVdecExV4L2: [0xa7118540] MtkOmxVdec::FreeBuffer all output buffers have been freed!!! signal mOutPortFreeDoneSem(1)
2022-09-14 22:58:28.814 426-29796/? E/OMXNodeInstance: setParameter(0xa7118d44:MTK.DECODER.AVC, OMX.google.android.index.allocateNativeHandle(0x7f20040e): Output:1 en=0) ERROR: BadParameter(0x80001005)
2022-09-14 22:58:28.815 426-29796/? I/MtkOmxVdecExV4L2: [0xa7118d40] --- GetOutputPortDefinition --- (176 144 176 160 5 46096 0x7f000001), pPortDef (176 144 176 160 5 46096 0x7f000001)
2022-09-14 22:58:28.818 426-29796/? I/MtkOmxVdecExV4L2: [0xa7118d40] --- GetOutputPortDefinition --- (3840 2160 3840 2176 5 12533776 0x7f000001), pPortDef (3840 2160 3840 2176 5 12533776 0x7f000001)
2022-09-14 22:58:28.879 426-29796/? I/MtkOmxVdecExV4L2: [0xa7118d40] --- GetOutputPortDefinition --- (3840 2160 3840 2176 5 12533776 0x7f000001), pPortDef (3840 2160 3840 2176 5 12533776 0x7f000001)
2022-09-14 22:58:28.879 426-29796/? I/MtkOmxVdecExV4L2: [0xa7118d40] --- GetOutputPortDefinition --- (3840 2160 3840 2176 5 12533776 0x7f000001), pPortDef (3840 2160 3840 2176 5 12533776 0x7f000001)
2022-09-14 22:58:29.065 426-28806/? I/MtkOmxVdecExV4L2: [0xa7118d40] --- GetOutputPortDefinition --- (3840 2160 3840 2176 5 12533776 0x7f000001), pPortDef (3840 2160 3840 2176 5 12533776 0x7f000001)
2022-09-14 22:58:29.066 426-24937/? I/MtkOmxVdecExV4L2: [0xa7118d40] [getReconfigOutputPortSetting] u4CheckBufferCount: 13, u4ChagnedDPBSize: 5, mMinUndequeuedBufs: 4, FRAMEWORK_OVERHEAD: 3, MAX_COLORCONVERT_OUTPUTBUFFER_COUNT:1
2022-09-14 22:58:29.069 455-484/? I/VCodecDrv: phHandle->fgOutputEarly 0
2022-09-14 22:58:29.070 426-24936/? I/MtkOmxVdecExV4L2: [0xa7118d40] --- FTBQ: mNumPendingOutput 1; mFillThisBufQ.size() 1,  CCDst: 0, CCSrc: 0
2022-09-14 22:58:29.070 426-24936/? I/MtkOmxVdecExV4L2: [0xa7118d40] -FlushOutputPort -> mNumPendingOutput(0)
2022-09-14 22:58:29.075 426-28806/? I/MtkOmxVdecExV4L2: [0xa7118d40] --- GetOutputPortDefinition --- (3840 2160 3840 2184 13 12583040 0x7f000003), pPortDef (3840 2160 3840 2184 13 12583040 0x10f)
2022-09-14 22:58:29.076 426-28806/? I/MtkOmxVdecExV4L2: [0xa7118d40] --- GetOutputPortDefinition --- (3840 2160 3840 2184 13 12583040 0x7f000003), pPortDef (3840 2160 3840 2184 13 12583040 0x10f)
2022-09-14 22:58:29.077 426-24936/? I/MtkOmxVdecExV4L2: [0xa7118d40] --- FTBQ: mNumPendingOutput 0; mFillThisBufQ.size() 0,  CCDst: 0, CCSrc: 0
2022-09-14 22:58:29.077 426-24936/? I/MtkOmxVdecExV4L2: [0xa7118d40] -FlushOutputPort -> mNumPendingOutput(0)
2022-09-14 22:58:29.077 426-28806/? I/MtkOmxVdecExV4L2: [0xa7118d40] MtkOmxVdec::FreeBuffer all output buffers have been freed!!! signal mOutPortFreeDoneSem(1)
2022-09-14 22:58:29.079 426-24936/? I/MtkOmxVdecExV4L2: [0xa7118d40] [getReconfigOutputPortSetting] u4CheckBufferCount: 13, u4ChagnedDPBSize: 5, mMinUndequeuedBufs: 4, FRAMEWORK_OVERHEAD: 3, MAX_COLORCONVERT_OUTPUTBUFFER_COUNT:1
2022-09-14 22:58:29.092 426-492/? I/MtkOmxVdecExV4L2: [0xa7118d40] --- GetOutputPortDefinition --- (3840 2160 3840 2184 13 12583040 0x7f000003), pPortDef (3840 2160 3840 2184 13 12583040 0x10f)
2022-09-14 22:58:29.092 426-28806/? I/MtkOmxVdecExV4L2: [0xa7118d40] --- GetOutputPortDefinition --- (3840 2160 3840 2184 13 12583040 0x7f000003), pPortDef (3840 2160 3840 2184 13 12583040 0x10f)
2022-09-14 22:58:29.095 455-484/? I/VCodecDrv: phHandle->fgOutputEarly 0
2022-09-14 22:58:29.097 426-24936/? I/MtkOmxVdecExV4L2: [0xa7118d40] --- FTBQ: mNumPendingOutput 0; mFillThisBufQ.size() 0,  CCDst: 0, CCSrc: 0

And my profiler:

I did receive one error around the same time as the memory errors occurred  that seemed a bit weird to me. I'm not sure if this is related but for documentation purposes here it is:
2022-09-14 22:56:39.349 514-514/? W/Binder: Outgoing transactions from this process must be FLAG_ONEWAY
java.lang.Throwable
at android.os.BinderProxy.transact(Binder.java:1116)
at com.amazon.connectivitymanager.IControllerManager$Stub$Proxy.registerEventCallback(IControllerManager.java:439)
at com.amazon.connectivitymanager.ConnectivityManager.registerConnectivityEventCallback(ConnectivityManager.java:671)
at com.amazon.service.AmazonAutoPairService$2.onRemoteServiceConnected(AmazonAutoPairService.java:209)
at com.amazon.connectivitymanager.ConnectivityManager$1.onServiceConnected(ConnectivityManager.java:518)
at android.app.LoadedApk$ServiceDispatcher.doConnected(LoadedApk.java:1748)
at android.app.LoadedApk$ServiceDispatcher$RunConnection.run(LoadedApk.java:1780)
at android.os.Handler.handleCallback(Handler.java:873)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:211)
at com.android.server.SystemServer.run(SystemServer.java:471)
at com.android.server.SystemServer.main(SystemServer.java:307)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:838)

@c-moyer thank you for the report!
Just to be clear:

did you reproduce the issue on 5.2 or 6.0 version ? We will handle issue on V6, and there are major changes in this branch.
do you reproduce the issue on basic sample (V6 branch works fine)
props you give to <Video seems simple, do you reproduce the issue with all kind of content ? (Dash, hls, local file,... )?

"react-native": "0.64.2",
"react-native-video": "version": "5.1.1",

I have only tried a 4k (25fps) mp4 that's saved locally to the file system. I'll upgrade tonight or tomorrow and see if I can still reproduce the error. I noticed @RickoNoNo3 said the issue appeared on 6 alpha but I'll attempt to reproduce.

Still working to update my app to React Native version 0.68.2, but just wanted to update that I'm getting constant memory errors on react-native-video 5.2.1 on react native 0.65.0. My initial test video won't even successfully loop once at this point.
2022-09-15 23:47:20.921 5073-6110/com.digitalsignageplayer E/LoadTask: OutOfMemory error loading stream
      java.lang.OutOfMemoryError: OutOfMemoryError thrown while trying to throw OutOfMemoryError; no stack trace available
2022-09-15 23:47:20.948 5073-5084/com.digitalsignageplayer E/System: java.lang.OutOfMemoryError: Failed to allocate a 24 byte allocation with 0 free bytes and 3GB until OOM, max allowed footprint 201328480, growth limit 201326592
        at com.android.internal.os.BinderInternal$GcWatcher.finalize(BinderInternal.java:62)
        at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:250)
        at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:237)
        at java.lang.Daemons$Daemon.run(Daemons.java:103)
        at java.lang.Thread.run(Thread.java:764)
2022-09-15 23:47:20.955 5073-6086/com.digitalsignageplayer E/AndroidRuntime: FATAL EXCEPTION: ExoPlayer:Playback
    Process: com.digitalsignageplayer, PID: 5073
    java.lang.OutOfMemoryError: Failed to allocate a 32 byte allocation with 0 free bytes and 3GB until OOM, max allowed footprint 201328480, growth limit 201326592
        at android.media.MediaCodec$BufferInfo.dup(MediaCodec.java:1545)
        at android.media.MediaCodec.dequeueOutputBuffer(MediaCodec.java:2705)
        at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.dequeueOutputBufferIndex(SynchronousMediaCodecAdapter.java:82)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.drainOutputBuffer(MediaCodecRenderer.java:1779)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:824)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:948)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:478)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:211)
        at android.os.HandlerThread.run(HandlerThread.java:65)
2022-09-15 23:47:21.545 5073-5073/com.digitalsignageplayer A/alsignageplaye: java_vm_ext.cc:542] JNI DETECTED ERROR IN APPLICATION: JNI IsInstanceOf called with pending exception java.lang.OutOfMemoryError: Failed to allocate a 40 byte allocation with 0 free bytes and 3GB until OOM, max allowed footprint 201328480, growth limit 201326592

I can confirm that the issue is also reproduced on basic sample (easy to reproduce with live channel), but I am not able to highlight the root cause for now.

@c-moyer My reproduction on sample seems to be linked (at least) to react-native version. I think I have this issue: https://github.com/facebook/react-native/issues/26407
I will try to update react-native version of sample. In the time, we are also upgrading our production app to 0.68 this week.
We can investigate the issue together you you want a fast fix :) let me know !

@freeboub Thanks for the update. I was trying to upgrade from 0.67 to 0.68 but ran into issues with the new architecture with our app. I'll try and look through that again tonight and see if I can get things to work. Thanks for looking into this, I'll do all I can to help as well!

@freeboub I created a fresh React Native app (no expo btw) on version 0.70.1 and installed<EMAIL_ADDRESS>and I'm still getting out of memory errors except I'm getting the errors almost immediately. The video I am attempting to play stutters terribly and then after it loops, the app crashes with a memory error:
2022-09-20 21:07:38.640 17399-17399/com.digitalsignageplayer W/RenderThread: type=1400 audit(0.0:139007): avc: denied { open } for path="/dev/__properties__/u:object_r:vendor_default_prop:s0" dev="tmpfs" ino=1585 scontext=u:r:untrusted_app:s0:c203,c256,c512,c768 tcontext=u:object_r:vendor_default_prop:s0 tclass=file permissive=0
2022-09-20 21:07:38.672 17399-17573/com.digitalsignageplayer I/alsignageplaye: Waiting for a blocking GC Alloc
2022-09-20 21:07:38.676 17399-17545/com.digitalsignageplayer I/alsignageplaye: Waiting for a blocking GC Alloc
2022-09-20 21:07:38.686 17399-17481/com.digitalsignageplayer I/alsignageplaye: Waiting for a blocking GC Alloc
2022-09-20 21:07:38.723 17399-17410/com.digitalsignageplayer I/alsignageplaye: Clamp target GC heap from 197MB to 192MB
2022-09-20 21:07:38.723 17399-17573/com.digitalsignageplayer I/alsignageplaye: WaitForGcToComplete blocked Alloc on HeapTrim for 51.114ms
2022-09-20 21:07:38.723 17399-17573/com.digitalsignageplayer I/alsignageplaye: Starting a blocking GC Alloc
2022-09-20 21:07:38.724 17399-17545/com.digitalsignageplayer I/alsignageplaye: WaitForGcToComplete blocked Alloc on HeapTrim for 47.734ms
2022-09-20 21:07:38.724 17399-17545/com.digitalsignageplayer I/alsignageplaye: Starting a blocking GC Alloc
2022-09-20 21:07:38.724 17399-17481/com.digitalsignageplayer I/alsignageplaye: WaitForGcToComplete blocked Alloc on HeapTrim for 38.063ms
2022-09-20 21:07:38.724 17399-17481/com.digitalsignageplayer I/alsignageplaye: Starting a blocking GC Alloc
2022-09-20 21:07:38.724 17399-17573/com.digitalsignageplayer E/AndroidRuntime: FATAL EXCEPTION: ExoPlayer:Loader:ProgressiveMediaPeriod
    Process: com.digitalsignageplayer, PID: 17399
    java.lang.OutOfMemoryError: OutOfMemoryError thrown while trying to throw OutOfMemoryError; no stack trace available
2022-09-20 21:07:38.725 17399-17573/com.digitalsignageplayer I/alsignageplaye: Starting a blocking GC Alloc
2022-09-20 21:07:38.728 17399-17573/com.digitalsignageplayer I/alsignageplaye: Starting a blocking GC Alloc
2022-09-20 21:07:38.729 17399-17545/com.digitalsignageplayer I/alsignageplaye: Waiting for a blocking GC Alloc
2022-09-20 21:07:38.735 17399-17481/com.digitalsignageplayer I/alsignageplaye: Waiting for a blocking GC Alloc
2022-09-20 21:07:38.782 17399-17573/com.digitalsignageplayer I/alsignageplaye: Clamp target GC heap from 197MB to 192MB

I am testing this on a physical Amazon 4k Max Firestick.

Hello @c-moyer, let's keep newArch feature in dedicated ticket (I have no plan to enable it in a near future, but we will need to do it for sure! )
For the memory leak, I found yesterday that there is an option enabled to prioritize time for size which can lead to a but amount of memory reserved: see https://github.com/react-native-video/react-native-video/blob/2349fad25f402d75812d449e4630172851590dc6/android/src/main/java/com/brentvatne/exoplayer/ReactExoplayerView.java#L591
Can you try to dis ale it manually, please ? I did it yesterday in my fork, but I am not 100% sure it fixes the issue...
Let me know !

Changing the line you mentioned from true to false didn't seem to help the memory issue but I am having issues testing. Ever since I began debugging this issue on React Native >= 0.65 (0.64.3 works fine), I've had another issue simply getting the video to play without an unbearable amount of stutter that produces similar memory warnings in the logcat. I even created a brand new app from scratch last night and still had the same issue on both the physical device and emulator so I've been unable to fully check the initial memory issue this post was referencing. It seems that Exoplayer and  React Native don't work well together in general. I found another post stating similar issues for the Expo package as well. https://stackoverflow.com/questions/66472776/flatlist-with-video-streaming-react-native-expo-runs-into-memory-problems-on

So changing the parameter to false didn't fix the memory issue, but it did result in a different overall error. I still noticed warnings in my logcat of forced garbage collection because memory limits had been exceeded, but here is the error which actually crashed the app. I was able to replicate this three times in a row.

2022-09-23 01:43:30.727 27155-19737/com.digitalsignageplayer A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x8 in tid 19737 (CodecLooper), pid 27155 (alsignageplayer)
2022-09-23 01:43:31.213 27155-19714/com.digitalsignageplayer I/alsignageplaye: Explicit concurrent copying GC freed 6576(768KB) AllocSpace objects, 130(8MB) LOS objects, 3% free, 155MB/161MB, paused 144us total 2.349s
2022-09-23 01:43:31.210 27155-27155/com.digitalsignageplayer W/MediaCodec_loop: type=1400 audit(0.0:565980): avc: denied { read } for name="u:object_r:media_prop:s0" dev="tmpfs" ino=1403 scontext=u:r:untrusted_app:s0:c203,c256,c512,c768 tcontext=u:object_r:media_prop:s0 tclass=file permissive=0
2022-09-23 01:43:31.215 27155-19718/com.digitalsignageplayer I/MediaCodecLogger: [ASAP] HW.video.avc Got First Frame Render 194786969(4261)
2022-09-23 01:43:31.216 27155-19718/com.digitalsignageplayer I/MediaCodecLogger: App sets Timestamps for render in SurfaceFlinger
2022-09-23 01:43:31.216 27155-19719/com.digitalsignageplayer E/BufferQueueProducer: [SurfaceTexture-0-27155-5038] queueBuffer: BufferQueue has been abandoned
2022-09-23 01:43:31.216 27155-19719/com.digitalsignageplayer E/Surface: queueBuffer: error queuing buffer to SurfaceTexture, -19
2022-09-23 01:43:31.216 27155-19719/com.digitalsignageplayer E/FrameEvents: updateAcquireFence: Did not find frame.
2022-09-23 01:43:31.216 27155-19719/com.digitalsignageplayer E/ACodec: queueBuffer failed in onOutputBufferDrained: -19
2022-09-23 01:43:31.216 27155-19719/com.digitalsignageplayer E/ACodec: signalError(omxError 0x80001001, internalError -19)
2022-09-23 01:43:31.217 27155-19718/com.digitalsignageplayer E/MediaCodec: Codec reported err 0xffffffed, actionCode 0, while in state 6
2022-09-23 01:43:31.217 27155-19718/com.digitalsignageplayer I/MediaCodecLogger: 27155.HW.video.avc.DecoderErrorFatal = 1
2022-09-23 01:43:31.217 27155-19718/com.digitalsignageplayer I/MediaCodecLogger: 27155.HW.video.avc.ASAP-P2Ms = 4
2022-09-23 01:43:31.217 27155-19718/com.digitalsignageplayer I/MediaCodecLogger: 27155.HW.video.avc.ASAP-P3Ms = 15
2022-09-23 01:43:31.217 27155-19718/com.digitalsignageplayer I/MediaCodecLogger: 27155.HW.video.avc.FirstFrameReadyMs = 246
2022-09-23 01:43:31.218 27155-19718/com.digitalsignageplayer E/libc: Access denied finding property "media.metrics.enabled"
2022-09-23 01:43:31.220 27155-19718/com.digitalsignageplayer D/SurfaceUtils: disconnecting from surface 0xbba4e008, reason disconnectFromSurface
2022-09-23 01:43:31.221 27155-19714/com.digitalsignageplayer E/MediaCodecVideoRenderer: Video codec error
      java.lang.IllegalStateException
        at android.media.MediaCodec.native_dequeueInputBuffer(Native Method)
        at android.media.MediaCodec.dequeueInputBuffer(MediaCodec.java:2635)
        at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.dequeueInputBufferIndex(SynchronousMediaCodecAdapter.java:99)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.feedInputBuffer(MediaCodecRenderer.java:1190)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:794)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:989)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:490)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:211)
        at android.os.HandlerThread.run(HandlerThread.java:65)
2022-09-23 01:43:31.222 27155-19714/com.digitalsignageplayer E/ExoPlayerImplInternal: Playback error
      com.google.android.exoplayer2.ExoPlaybackException: MediaCodecVideoRenderer error, index=0, format=Format(1, null, null, video/avc, avc1.640033, -1, null, [3840, 2160, 25.0], [-1, -1]), format_supported=YES
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:566)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:211)
        at android.os.HandlerThread.run(HandlerThread.java:65)
     Caused by: com.google.android.exoplayer2.video.MediaCodecVideoDecoderException: Decoder failed: OMX.MTK.VIDEO.DECODER.AVC
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.createDecoderException(MediaCodecVideoRenderer.java:1590)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:813)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:989)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:490)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:211)
        at android.os.HandlerThread.run(HandlerThread.java:65)
     Caused by: java.lang.IllegalStateException
        at android.media.MediaCodec.native_dequeueInputBuffer(Native Method)
        at android.media.MediaCodec.dequeueInputBuffer(MediaCodec.java:2635)
        at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.dequeueInputBufferIndex(SynchronousMediaCodecAdapter.java:99)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.feedInputBuffer(MediaCodecRenderer.java:1190)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.render(MediaCodecRenderer.java:794)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.doSomeWork(ExoPlayerImplInternal.java:989)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:490)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:211)
        at android.os.HandlerThread.run(HandlerThread.java:65)
2022-09-23 01:43:31.225 27155-19714/com.digitalsignageplayer E/ExoPlayerImplInternal: Disable failed.
      java.lang.IllegalStateException
        at android.media.MediaCodec.native_flush(Native Method)
        at android.media.MediaCodec.flush(MediaCodec.java:2131)
        at com.google.android.exoplayer2.mediacodec.SynchronousMediaCodecAdapter.flush(SynchronousMediaCodecAdapter.java:166)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.flushCodec(MediaCodecRenderer.java:877)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.flushOrReleaseCodec(MediaCodecRenderer.java:870)
        at com.google.android.exoplayer2.mediacodec.MediaCodecRenderer.onDisabled(MediaCodecRenderer.java:710)
        at com.google.android.exoplayer2.video.MediaCodecVideoRenderer.onDisabled(MediaCodecVideoRenderer.java:561)
        at com.google.android.exoplayer2.BaseRenderer.disable(BaseRenderer.java:186)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.disableRenderer(ExoPlayerImplInternal.java:1651)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.resetInternal(ExoPlayerImplInternal.java:1392)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.stopInternal(ExoPlayerImplInternal.java:1355)
        at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:582)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:211)
        at android.os.HandlerThread.run(HandlerThread.java:65)

I am also running into this issue (on 6.0.0-alpha3) on Android, but only (or only noticeable) when the video file is local (gallery or camera, I didn't try bundled video in app package). It's pretty bad as loading any local video over a few minutes long will immediately trigger the out of memory exception. It will also trigger if few short videos were loaded consecutively. Loading videos from a remote url doesn't seem to trigger it.

Upon further digging, my issue seems to be related to this: https://github.com/google/ExoPlayer/issues/7480
Disabling the "repeat" seems to solve the problem for me.

I have been struggling with this memory issue too. I realized that my memory problem was partly related to React Navigation. I had too many screens with the Video component in the navigation stack. Once I started replacing screens instead of navigating, things got manageable. However, is there a better technique for un-mounting/disabling the Video component without having to modify the Navigation Stack?

@TensionCoding
I had a similar issue but for iOS, which isn’t related to ExoPlayer, and solved it this way.
You can use a custom view to wrap your video component, and use
`import { useIsFocused } from '@react-navigation/native';
To conditionally render the Video component only when the screen is focused, otherwise rendering an Image component instead. You can also pass in a flag to pre-load the Video if needed.
You can use Memo on other parts of the screen to further improve performance if needed.

@freeboub Have you had a chance to look at this anymore?

seeing it also

i'm having this issue in my project as well, the app crashes after i record a video, when the app shows a preview of it
only crashes with resolutions above FHD tho

here is my logcat output

i used  adb logcat -D *:E

tested on samsung s20+ and s21

I created a fresh React Native app and installed 6.0.0-alpha.3. I'm noticing a difference in the memory leak compared with my initial profiler that I posted above. In the initial profiler, the memory leakage was appearing under "other" but now it's appearing under "native".

These rendered nodes seems to be hanging around.

A few minutes later:

Hello,
Have you tried bufferConfig ? Default max buffer length is 50 sec which is a lot.
I got my app crash with just 3 or 4 very short looping videos. After limiting the buffer to something shorter than video length the memory stabilized.
Source : https://stackoverflow.com/a/64900778/10859647

i got it fixed by adding
android:largeHeap="true"
android:hardwareAccelerated="true"

to my manifest, it does not mean the issue is fixed tho, only means the app won't crash as often

Not sure on how to handle this issue as it seems linked to props (loop) and video type.
On my side I don't see any leak with video... Not sure on how to proceed.
To be reproduced with sample exoplayer to ensure this is not an exoplayer issue ...

@freeboub Can you provide the code you're testing with that doesn't have the memory leak?

until there is a resolution on this, this solution(https://github.com/react-native-video/react-native-video/issues/2984) solved my case:
react-native: 0.72.3
react-native-video: 6.0.0-alpha.6
Android: 13
Videos <= 1min
<Video
ref={playerRef}
source={{ uri: file.path }}
resizeMode="contain"
controls
bufferConfig={{
minBufferMs: 2500,
maxBufferMs: 3000, // default is 50 segundos, 3 seconds
bufferForPlaybackMs: 2500,
bufferForPlaybackAfterRebufferMs: 2500,
}}
/>

Might be related to my work around here:
https://github.com/react-native-video/react-native-video/issues/2984#issuecomment-1853228133

Having issues with this as well on 5.2.1 and 6.0.0-beta.3
BufferConfig and repeat didn't make a difference.

Hi Team,
We have this issue as well:
[ExoPlayer:Playback] Free memory reached 0, forcing garbage collection
Background concurrent mark compact GC freed 30863(9548KB) AllocSpace objects, 28(17MB) LOS objects, 39% free, 36MB/60MB, paused 1.693ms,7.307ms total 270.995ms
WaitForGcToComplete blocked Explicit on Background for 183.764ms
Explicit concurrent mark compact GC freed 3274(696KB) AllocSpace objects, 1(152KB) LOS objects, 40% free, 35MB/59MB, paused 2.520ms,7.236ms total 251.234ms
bufferpool2 0xb400006c2e7dde28 : 5(40960 size) total buffers - 4(32768 size) used buffers - 1433/1438 (recycle/alloc) - 5/1435 (fetch/transfer)

Made these changes with no improvement at all:
BufferConfig and repeat
android:largeHeap="true"
android:hardwareAccelerated="true"

This has been opened for a while and we don't see any developments. Any updates?

@dnetcrawler I tried to investigate and it seems to be an issue in exoplayer (I cannot find anymore the issue I found).
If you reproduce it, I would advise you to try on a sample exoplayer to tripple check...

The issue still persists

For me the repeat prop was causing the memory leak, fixed by repeating the video using ref
import Video, { VideoRef } from 'react-native-video';

 <Video
          ref={videoRef}
          source={require('~/assets/videos/intro.mp4')}
          resizeMode="cover"
          repeat={false}
          onEnd={() => videoRef.current?.seek(0)}
        />

For me the repeat prop was causing the memory leak, fixed by repeating the video using ref
import Video, { VideoRef } from 'react-native-video';

 <Video
          ref={videoRef}
          source={require('~/assets/videos/intro.mp4')}
          resizeMode="cover"
          repeat={false}
          onEnd={() => videoRef.current?.seek(0)}
        />

thanks tried this resolved my issue its due to repeating the video.

Whats the final solution to this? Can we do something? Can we contribute in some way?
I have the same memory leakage and I must render multiple HD videos at the same time.

@davinun99 I my mind all issues comes from exoplayer, not react native video itself.
There is one leak issue in exoplayer, when you repeat small videos (with repeat=true) a workround is available in the thread.
Some 4K video leaks. not 100% sure f the root cause. Keep in mind that video decoders of the device can also leak :/


[NV-TF] Sync NV-TF 2206 commits.

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 14 committers have signed the CLA.:white_check_mark: liutongxuan:x: penpornk:x: mihaimaruseac:x: tensorflower-gardener:x: nluehr:x: reedwm:x: kaixih:x: ishark:x: trevor-m:x: philipphack:x: kushanam:x: poulsbo:x: aaudiber:x: karimnosseirYou have signed the CLA already but the status is still pending? Let us recheck it.


Getting list of running notebooks

It would be great to have an analog of jupyter_server.serverapp.list_running_servers to get the information about notebooks, created by VSCode-jupyter.
As of now, by parsing tmp/tmp-*.json files and matching their key field to processes in proc/PID/, we can get some idea about which notebooks are currently running, but it is impossible to get some of the useful fields like notebook names/cwd/path.

Thanks for the suggestion. I believe we are working on something for this already (assuming you mean running kernels), though I'm unable to find any related issue for it.

@SergeyTsimfer - are you looking for something in the UI that lists the kernels, or are you trying to use the list in your own extension?

I've developed a Python library that shows all of the running Python processes, their names, and resources they are using (CPU, RSS, NVIDIA devices, etc).
It works well with Jupyter Notebooks started in JupyterLab, regular Jupyter, and a few other ways to create a running kernel. In doing so, it relies on, for example, jupyter_server.serverapp API to match the kernel_id of a given process to the name/path of an actual notebook it executes.
Unfortunately, VSCode does not expose such API. While I can still get the kernel_id (actually, key, that is returned by the ipykernel_launcher at kernel launch) of a process and get all of the resource statistics, I can't match it to the name/path of this notebook in a reasonable and non-hacky way.

OK, it sounds like you would be able to achieve that if we fixed #8827.
I'll close this issue in favor of that, and you can vote on that other issue if that works for you.


react-app-rewire-mobx not working with decorator @observable

react-scripts version 1.0.12.
I following the instruction from this link: https://github.com/timarney/react-app-rewired/tree/master/packages/react-app-rewire-mobx
The app will run without decorator. Once I use decorator, I got "Syntax error: C:/.../...js: Unexpected token" at the "@observable".
Did I miss anything?
I tried installing babel-plugin-transform-decorators-legacy  and then added config = injectBabelPlugin('transform-decorators-legacy',config); in the config-overrides.js and it didn't work either.
Thanks.

Please try cloning and running this repo to see if it works for you - https://github.com/timarney/mobx-rewire-test I updated it to the latest  1.0.12 release and the tests are passing.

@timarney I tried it and I got the same error.  I also saw this message "babel-loader not found" message after running yarn start (see screenshot below). I do have babel-loader installed. I'm in Windows 10.

That error would be coming from this file.
https://github.com/timarney/react-app-rewired/blob/master/packages/react-app-rewired/index.js
Right for time these days but I'll dig into it further as time allows.

I removed the slash "/" from this row: return rule.loader && rule.loader.indexOf("babel-loader/") != -1; in https://github.com/timarney/react-app-rewired/blob/master/packages/react-app-rewired/index.js
Now it works!


Rename ChunkLoading::None to ChunkLoading::Edge

Description

Testing Instructions

#8376  👈
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @timneutkens and the rest of your teammates on  Graphite


Add payment button support

Part of https://github.com/tastyigniter/ti-ext-payregister/pull/9

I was thinking about this the other day... now that we have authorise only on Stripe this would work fine as is as long as we indicate that people should use authorise only.

Yup would be a nice feature to add once we've crossed this beta stage.. ;)


[Bug Report] Extra kwargs in register don't work

Describe the bug
I am trying to register an env defining env-specific kwargs. However, this doesn't work, and I get the following error:
venv/lib/python3.11/site-packages/gymnasium/envs/registration.py:677: in register
    new_spec = EnvSpec(
E   TypeError: EnvSpec.__init__() got an unexpected keyword argument 'num_envs'

I believe the problem is the following line:
https://github.com/Farama-Foundation/Gymnasium/blob/b312a0334e28ed69ca1fa2bcffbb8ab239a9b448/gymnasium/envs/registration.py#L624
That we should change like this:
- **kwargs,
+ kwargs=kwargs,

Code example
In file:
import gymnasium as gym

class MyEnv(gym.Env):
    def __init__(self, num_envs: int):
        pass

In init:
register(
    id="SingleEnv",
    entry_point="file:MyEnv",
    num_envs=1,
)

System info
No response
Additional context
No response
Checklist

[X] I have checked that there is no similar issue in the repo

Yes, your right. I wonder how long this has been an issue for?
@younik Are you happy to make a PR?

Yes, your right. I wonder how long this has been an issue for?
@younik Are you happy to make a PR?

Sure, I opened a PR.
I found from tests, that the way to go before was:
gym.register(
   ...
   kwargs={"arg1": value1}

Instead of:
gym.register(
   ...
   arg1=value1

Also the past behavior is fine, but then we don't want this signature
https://github.com/Farama-Foundation/Gymnasium/blob/b312a0334e28ed69ca1fa2bcffbb8ab239a9b448/gymnasium/envs/registration.py#L570
But instead simply kwargs.
I think the new implementation is better, however, it is a breaking change. So, maybe we can simply change the signature of the register, and keep the current behavior (specifying kwargs of env as a dict in register)

Okay, in the end, I did the non-breaking change, so you can register the environment using the named argument kwargs passing a dictionary of arguments for the env.

Okay, in the end, I did the non-breaking change, so you can register the environment using the named argument kwargs passing a dictionary of arguments for the env (I doubt tho, this is what the implementer had in mind, as kwargs can be quite confusing as name of argument)

Ahh that makes sense, I had a feeling that we have used the parameter before and it does work.
I think keeping it as kwarg is the right decision as you note, and it is a simple change to fix it


Fix tests

Coverage remained the same at 86.364% when pulling bbd1e27b839262dbecb5a2e5d4e202734bc8883f on fix-tests into a88f6fe49aab1aed397f085d0e0241ca16b8597c on master.

Coverage remained the same at 86.364% when pulling bbd1e27b839262dbecb5a2e5d4e202734bc8883f on fix-tests into a88f6fe49aab1aed397f085d0e0241ca16b8597c on master.


Questions about the success rate of experimental results

In the paper (3D Diffusion Policy: Generalizable Visuomotor Policy Learning via Simple 3D Representations) The chart appearing in the appendix, which I have shown in the appendix, is entitled TABLE XVII: Full evaluation results of Simple DP3. We evaluate Simple DP3 on 10 tasks and compare it with DP3 and find that Simple  DP3 could achieve results very competitive to DP3 and TABLE XVIII: Main results on 72 simulation tasks. Results for each task are provided in this table. A summary across domains is shown  in Table I.
Q1: Is the result of TABLE XVII and TABLE XVIII the highest success rate or the average success rate?
Q2: What is the meaning of '+-' for the data in TABLE XVII and TABLE XVIII?
Q3: In the process of reproduction, I found that for the same task, several times running the script, there may be results, for example, the data you provided is 80 (assuming the success rate), whether it is the highest/average/final success rate, I found that there will be fluctuations, such as 78,81,77, etc. May I ask how the data in the final table was processed?
Q4: For the data in TABLE XVII and TABLE XVIII, there may be some decimal phenomena in the process of reproduction, that is, the obta
ined results are not always integers. May I ask how the data in the final table is processed?

Hi, thank you for your interest. The success rate is the average of 5 best history success rates, as stated in our main paper. The std is reported also by '+-'. The integers are just rounded from decimals.


Printing not Working - „GET /api/print/…/0 HTTP/1.1“ 404

Describe the bug
Printing Not working on 3.0a2
Log says „GET /api/print/…/0 HTTP/1.1“ 404
Printing is working via Terminal.
To Reproduce
Steps to reproduce the behavior:

setup Printer via cups
Print From Gallery

The endpoint is slightly different:
http://localhost:8000/api/doc

First and second print latest, the third prints specific id.

So the Print Button in Gallery or result screen will lead to an error in newest Versions.
I don‘t Know Anything about the API.
I just want to trigger the Print from the screen.

The full line is:
2024-05-18 16:27:33,828 [    INFO] <IP_ADDRESS>:47404 - "GET /api/print/b357cb2ee31861f3c789be61a0cc01be/0 HTTP/1.1" 404 (httptools_impl.py:481)

Dang, very correct. Updated in https://github.com/photobooth-app/photobooth-frontend/commit/a8caa659b2f15aa2695d92ce5b806703eae40ab9
Will be fixed in next release.

Any way to fix it manuelly?
I want to use the photobooth today :)

Maybe not the best idea to use a prerelease version if urgently needed... ;)
I just released a new version, wait until its done and you can update as usual: https://github.com/photobooth-app/photobooth-app/actions/runs/9140662352


S3 Export halts on invalid symlinks

When a media file is actually a symlink and the target file does not exist then the s3_export script halts with no explanation.
Perhaps it should skip the file and offer an error report at the end, or fail immediately with an error?

Hi @garethmidwood,
I have applied a partial fix to address exports to S3 failing on broken symlinks. The command line tool should now just ignore broken symlinks. However, the admin interface was too difficult to address since it requires overriding some more core functionality that I'm not comfortable doing at the point in time.
Regards,
Thai


Do we really want to check for "TODO" in our code?

Description

Type: Bug
Priority: Major

Bug
OS
All
mbed TLS build:
development and LTS versions
Expected behavior
It's sometimes useful to note when we want to do something in the future in our code comments. Yes, we should generally file an issue on GitHub for things we want to do, so we can remember to do them and track progress better, but checking for the "TODO" string seems the wrong way to go about this.
What value do we get by checking for "TODO"? Should the presence of "TODO" cause a hard failure in tests or just a warning? Should we also check for "XXX", "FIXME", and "To do"?
Actual behavior
Our tests look for "TODO" strings and fail if any are present. This leads to developers  spelling "TODO" as "To do" or "FIXME" to bypass the check.

For what it's worth, OpenSSL, GnuTLS, BearSSL and WolfSSL all have a double-digit number of TODO (the exact string) in their core code. So “TODO is unprofessional” doesn't apply in our space. Besides, FIXME is worse, and “to do” or “tonogrepdo” just makes it harder to find the thing afterwards.


Error: attempt to write a readonly database

I'm loading sqlite in a worker like the example. I've made a database with a table 'test' that includes 1 value called "testvalue". I've prepared the db according to Phiresky, by doing:
pragma journal_mode = delete; -- to be able to actually set page size
pragma page_size = 1024;

It succeeds loading the database by URL, but any query results in the error that it tries to write to the database.
<EMAIL_ADDRESS>await sqlite3.load(file => `https://cdn.jsdelivr.net/gh/riyaz-ali/sqlite3.js@master/dist/${file}`)
console.log('sqlite worker is ready');

// open a new connection
let connection = new sqlite3.open(dbUrl); // opens a new in-memory connection

console.log('sqlite connection opened');

// let's try out a query
let stmt = connection.prepare("SELECT * from test");
while(stmt.step()) { console.log(stmt.get()) } // will print out each row to console
stmt.finalize();

Ah! interesting. Can you share the steps to create the database file?

#in Makefile
sqlite3 catalog.sqlite3 < ./init

# in ./init script
-- see https://github.com/phiresky/sql.js-httpvfs
pragma journal_mode = delete; -- to be able to actually set page size
pragma page_size = 4096; -- trade off of number of requests that need to be made vs overhead.

-- create Full-Text-Search table
CREATE VIRTUAL TABLE artist_names USING fts5(name, name_sort);

-- sqlite should read csv's exported from musicbrainz
.mode csv

-- import table data for artists
.import ./data/artists.csv artists

-- copy text data to FTS table
INSERT INTO artist_names SELECT name, sort_name FROM artists;

-- Evaluating the special "optimize" command, an SQL statement of the form "INSERT INTO <fts-table>(<fts-table>) VALUES('optimize')", causes FTS to merge all existing index b-trees into a single large b-tree containing the entire index. This can be an expensive operation, but may speed up future queries.
INSERT into artist_names(artist_names) values ('optimize');

vacuum; -- reorganize database and apply changed page size

.quit


UEFI Jetson: Disable network boot

On particular devices that have been provisioned with the ethernet cable plugged, the UEFI firmware sets network boot with highest priority.
To avoid boot delays of up to 5 minutes, we disable network boot completely, since it's not used in balenaOS anyway.
This change is based on Oleksandr Slovak's patch for disabling unwanted http and pxe boot.

@balena-ci I self-certify!

@resin-jenkins retest this please


Hello, I can't open your dataset web page on your behalf, the display page does not exist

Thanks

Hi, and sorry for the late reply. Thank you for the question. The original website of the dataset is .. However, I have found that the URL is no longer accessible. Since we also do not have a backup of this dataset, you will need to search the internet to see if there is a backup available.


tests, gpu: Do not mount /sys/devices/ for SRIOV devices

What this PR does / why we need it:
Libvirt required a Read/Write access to the hostdev devices representation,
on sysfs in older versions (< 5.6).
Since libvirt 5.6.0-10 [1] this is no longer the case and Read-Only access is sufficient.
Therefore, there is no longer a need for kubevirt to explicitly mount
/sys/devices with RW access on the virt-launcher.
This change removes the sysfs /sys/devices mount for VMI/s which contain GPU device.
Also the Read/Write privileges given to  virtLauncher in the SELinux policy (virt_launcher.cil)
were removed as it no longer needed.
Signed-off-by: alonSadan<EMAIL_ADDRESS>
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Special notes for your reviewer:
Release note:

/test pull-kubevirt-e2e-k8s-1.18

/release-note-none

/assign @vladikr

/hold
Let's wait until https://github.com/kubevirt/kubevirt/pull/3937 is merged.
Currently, we don't have a CI to verify the change. 3937 will provide such a test.
I will also try to validate this manually, later on.

/hold
Let's wait until #3937 is merged.
Currently, we don't have a CI to verify the change. 3937 will provide such a test.
I will also try to validate this manually, later on.

Thank you!

@alonSadan could you please rebase this and we can try again

@alonSadan could you please rebase this and we can try again

Sorry for the late reply.
Done.

Looks like the relevant tests are passing, so I'm fine with this change.
/lgtm
/retest

/retest

/retest

/retest

retest

/retest

/retest

/retest

I am un-holding  since the relevant test was already added and it passed. Also this PR is lgtm and approved by @vladikr .
/unhold

rebased on master

/retest

/retest

/approve
/lgtm
Thanks @alonSadan
At this point, virt-launcher isn't allowed to write into the /sys/devices , so this mount shouldn't be necessary.


eprload can't load files

Not sure of this is a bug that exists only with MATLAB 2020a, but I noticed that I'm having troubles loading files with with eprload.
Regardless of whether I'm loading a file that is in the working directory or a different directory, I get an error message:
Here is a MWE:
% any of the following ways to provide the file path gives an error message:
FilePath = "408923.DTA";
FilePath = ""./data/408923.DTA""
FilePath = "408923";
FilePath = join(["./data/" "408923" ".DTA"],'')

[t, V] = eprload(FilePath);

The error message is
Error using exist
The first input to exist must be a string scalar or character
vector.

Error in eprload (line 96)
LocationType = exist(FileName,'file');

Apparently the string array thats created in line 95 in eprload
FileName = [FullBaseName FileExtension];

is no longer processed correct exist and we need to switch it to:
FileName = join([FullBaseName FileExtension],'');

The fundamental issue here is that you are feeding eprload with a string scalar instead of a character vector. The two should be handled equivalently, but EasySpin is not designed or tested to handle string scalars, which are a relatively recent addition to MATLAB. We need to add corresponding tests for eprload and other functions.

Fixed for eprload in commit 34f1332932b4789c7344d9a8517dd404513eb3ab


Upgrade Google Cloud Container Registry to Artifact Registry?

I received the following email from Google. Are we even using the Container Registry or is that a leftover from our crawler? @Jocelyn0830, can you look into this?

[Action Required] Upgrade to Artifact Registry from Container Registry before May 15, 2024

Container Registry will be phased out, starting May 15, 2024. Please review the options below for how to upgrade your projects to Artifact Registry.

We’re writing to let you know that Container Registry will be phased out starting May 15, 2024, and replaced by Artifact Registry, which offers a variety of new capabilities.

What do you need to know?
Starting May 15, 2024, we’ll limit the projects allowed to host images in Container Registry. The only projects allowed to host the images will be the ones in which:

The Container Registry API was enabled before May 15, 2024.
Images were pushed to Container Registry.
For all other projects, once the discontinuation starts, images will be automatically hosted in Artifact Registry, and you will no longer have the option to host images in Container Registry. Container Registry is in maintenance and only receives critical legal or security fixes.

Once you’ve transitioned to Artifact Registry you’ll be able to store images in:

Standard Artifact Registry repositories on the pkg.dev domain in any supported region. This option can reduce latency and egress costs to Google Cloud runtime environments like GKE.
Repositories with gcr.io domain support for backwards compatibility with your existing automation. These repositories are only available in the same multi-regions that Container Registry supports.
Artifact Registry pricing model is not based on the underlying storage and egress costs in Cloud Storage like Container Registry. Storage costs are higher in Artifact Registry, but it provides better options to manage egress costs. For details about how this new pricing might impact your projects and options for managing costs, see our pricing documentation.

Note that if you use Container Registry through a dependent service such as Cloud Build, you will be billed for Artifact Registry instead of Container Registry within new projects after May 15, 2024. Requests will also use Artifact Registry quota instead of Container Registry quota. See our documentation for Artifact Registry quota limits.

What do you need to do?
These are the two transition paths we recommend you follow depending on your project’s architecture:

For projects where you use Container Registry:
Consider moving to Artifact Registry. Learn about options to transition to Artifact Registry to prepare for discontinuation of Container Registry.

For projects where you are not currently using Container Registry:
Prepare for automatic hosting of gcr.io in Artifact Registry before May 15, 2024:

Change any automation or workflows to enable the Artifact Registry API instead of the Container Registry API
Grant Artifact Registry roles to users and service accounts that interact with Container Registry.
Update automation that configures storage buckets for Container Registry to perform equivalent actions on Artifact Registry repositories.
Test gcr.io hosted in Artifact Registry using a test project, or transition a project where you are currently using Container Registry.
If you don’t take any of these transition paths, your existing automation workflows for Container Registry might not work in new projects after May 15, 2024.

We’ll send additional communications about future phases, how it will impact your existing Container Registry usage, and any required actions.

Your projects that use Container Registry currently are listed below:

gpc-crawler

We’re here to help
For further instructions to prepare new projects, see our guide to prepare for gcr.io hosted on Artifact Registry.
Additional details about this transition will also be published in our release notes page.
We thank you for your patience and understanding as we make this important change.

After reviewing our setup, I believe the Google Cloud Container Registry is only used in our cloud crawler. It seems to be complicated to move our images from Google Cloud Container Registry to Artifact Registry. I am not sure if it worths the time and money (there will be a cost) since we decide not to use our cloud crawler. Also given that Google Cloud Container Registry will be kept till next year, we still have a year to decide if we want to continue working with the cloud crawler. I am happy to hear what others think @SebastianZimmeck and @katehausladen

Thanks, @Jocelyn0830! My comment is the same as here. So, I would go ahead and remove the Google Cloud Container Registry. As our free credits have run out, I do not see much of reason to keep them around (though, please feel free to let me know otherwise, @Jocelyn0830 and @katehausladen).

Resolved


Project update

Have "hasResearchProduct" link to "core/RP" and "core/RVP", @olinux & @lzehl?

@olinux feel free to merge from my side it looks good.


No temp storage on NodeChef

Hi I am trying to upload files and store them using the UploadFS.store.GridFS package.
Locally...works fine.
I and using NodeChef and it does not create the /tmp/ufs storage directory.
They do not seem to allow tmp storage.
The UploadFS.selectFile(...) does not function...just hangs with no errors.
However the UploadFS.importFromURL(...) does work...interestingly enough.
Is there any work around for the local storage issue?
Thanks
Greg

Okay... the tmp/ufs directory was created...still no upload or errors.

I am using ssl ... causing the issue:
Okay seems to some sort of https issue....This request has been blocked; the content must be served over HTTPS.
Any ideas how to fix this?
80c5e3177efa53681672f9acfe53d35b95dfe169.js:246 Mixed Content: The page at 'https://app2.saturnsocial.com/library' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://app2.saturnsocial.com/ufs/uploadimages/GQGrsq3x5idn6jyDe?token=A86979Ea89&progress=0.6192455967949203'. This request has been blocked; the content must be served over HTTPS.(anonymous function) @ 80c5e3177efa53681672f9acfe53d35b95dfe169.js:246
80c5e3177efa53681672f9acfe53d35b95dfe169.js:246 XMLHttpRequest cannot load http://app2.saturnsocial.com/ufs/uploadimages/GQGrsq3x5idn6jyDe?token=A86979Ea89&progress=0.6192455967949203. Failed to start loading.(anonymous function) @ 80c5e3177efa53681672f9acfe53d35b95dfe169.js:246
80c5e3177efa53681672f9acfe53d35b95dfe169.js:246 Mixed Content: The page at 'https://app2.saturnsocial.com/library' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://app2.saturnsocial.com/ufs/uploadimages/GQGrsq3x5idn6jyDe?token=A86979Ea89&progress=0.6192455967949203'. This request has been blocked; the content must be served over HTTPS.(anonymous function) @ 80c5e3177efa53681672f9acfe53d35b95dfe169.js:246
80c5e3177efa53681672f9acfe53d35b95dfe169.js:246 XMLHttpRequest cannot load http://app2.saturnsocial.com/ufs/uploadimages/GQGrsq3x5idn6jyDe?token=A86979Ea89&progress=0.6192455967949203. Failed to start loading.(anonymous function) @ 80c5e3177efa53681672f9acfe53d35b95dfe169.js:246
80c5e3177efa53681672f9acfe53d35b95dfe169.js:246 Mixed Content: The page at 'https://app

False alarm it seems .. a server config issue.
Trying to work from both ends,


[breaking][bugfix][vm] Charge gas for emit_event

This PR has a couple bugfixes related to gas:

Emit event wasn't included in both the set of native cost indices, and was having zero gas charged for it (thanks @tnowacki for spotting this!)
The default constants in the VM didn't match up with the constants on the Move side that are being published.
The number of native functions in the the VM didn't include emit_event.

This PR also updates some old comments relating to gas both on the Move side and the in the VM.
This PR is breaking since this PR will change the gas usage for transactions that emit events.

given the breaking nature of this PR, would it make sense to review Exists given it charges 0 for non existent resources? also would this be a good time to review whether there are other cases where we charge 0 and we should not?
FreezeRef is an instruction that does not charge at all, and maybe it should at least charge the instruction cost?
Not sure we have other places where we can have a 0 charging...

@vgao1996, @runtian-zhou any reference to something gas related that you noticed should or could be changed/corrected?

I think that's a good idea @dariorussi, I'll update this with all of those changes as well.

@dariorussi In addition to what you mentioned, I think we should review whether it is appropriate to charge 0 for the native functions in the Debug module. Although those functions don't do anything meaningful in prod, there's still a cost calling the dispatcher or simply stepping through them in the interpreter.

I'm not sure if I quite follow on the Debug natives: these should only be callable locally, and the modules for calling them and there should be no way of calling them in prod correct?
Because of that I'm not sure if/when we'd ever hit this linking/calling overhead for these in prod? But I'm not as familiar with this area, so I'm happy to put in a low non-zero gas cost just to be on the safe side if we want.

Right now the Debug module is included in the prod genesis, but the actual implementation is guarded by a feature flag that's only enabled in e2e tests. This means it's basically a no-op if you call it in prod, but still you can call it and the VM still has to do some minimal work on it.
We made it this way due to these considerations:

We kinda don't want these to affect gas usage, which might help make debugging easier and thus the 0 cost.
Having the Debug module included means we don't have to manage two versions of genesis, and it also comes with the benefit of allowing modules to be published and used without the Debug statements being explicitly stripped out.

However I'd say both are debatable and there's certainly room for adjustments here. I'd personally welcome discussions on alternative approaches like not registering this native function at all in prod. Anyways this is one of the things we don't fully understand and we'll likely know it better as we go...

@vgao1996

Right now the Debug module is included in the prod genesis, but the actual implementation is guarded by a feature flag that's only enabled in e2e tests. This means it's basically a no-op if you call it in prod, but still you can call it and the VM still has to do some minimal work on it.

We kinda don't want these to affect gas usage, which might help make debugging easier and thus the 0 cost.
Having the Debug module included means we don't have to manage two versions of genesis, and it also comes with the benefit of allowing modules to be published and used without the Debug statements being explicitly stripped out.
However I'd say both are debatable and there's certainly room for adjustments here. I'd personally welcome discussions on alternative approaches like not registering this native function at all in prod. Anyways this is one of the things we don't fully understand and we'll likely know it better as we go...

Ahh I see. In that case I think adding a non-zero gas price makes sense for this until we decide whether or not to remove everything related to debugging in prod. Additionally a zero gas price for this would violate the invariants that are now being checked when charging gas (that the gas amount is non-zero if metering isn't turned off). Does this sound reasonable to you?
If we have time I think it might be worthwhile discussing the debug module/genesis at tomorrow's meeting (or possibly we can just chat if you'd prefer) since I think the inclusion/exclusion of the linking code for the debug module is an interesting question where there isn't a totally clear answer and I'd really like to learn more about it.

adding a non-zero gas price makes sense for this
Sounds reasonable to me.

Yeah feel free to chat with me or bering it up in the meeting!

/land