[FFmpeg-trac] #8607(undetermined:new): JNI global ref table overflow after av_mediacodec init many times

FFmpeg trac at avcodec.org
Thu Apr 9 14:40:35 EEST 2020


#8607: JNI global ref table overflow after av_mediacodec init  many times
-------------------------------------+-------------------------------------
             Reporter:  paulyao      |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:
  undetermined                       |  unspecified
             Keywords:  JNI          |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Hi
 I got this error on Android 4.4.2

 Error Log:


 {{{
 E/dalvikvm( 1366): JNI ERROR (app bug): global reference table overflow
 (max=51200)
 W/dalvikvm( 1366): JNI global reference table (0x8cd81008) dump:
 W/dalvikvm( 1366):   Last 10 entries (of 51200):
 W/dalvikvm( 1366):     51199: 0x433b2880
 android.content.res.AssetFileDescriptor
 W/dalvikvm( 1366):     51198: 0x416a8f68
 java.lang.Class<android.content.res.AssetManager>
 W/dalvikvm( 1366):     51197: 0x41938d48 android.content.res.AssetManager
 W/dalvikvm( 1366):     51196: 0x4193bef0
 java.lang.Class<com.unity3d.player.UnityPlayer>
 W/dalvikvm( 1366):     51195: 0x4193aca0
 com.unity3d.player.UnityPlayerActivity
 W/dalvikvm( 1366):     51194: 0x4193a9a0
 java.lang.Class<com.unity3d.player.UnityPlayerActivity>
 W/dalvikvm( 1366):     51193: 0x42a365e8 android.media.MediaFormat
 W/dalvikvm( 1366):     51192: 0x42a265a0 android.media.MediaCodec
 W/dalvikvm( 1366):     51191: 0x4177cdb0
 java.lang.Class<android.media.MediaCodec>
 W/dalvikvm( 1366):     51190: 0x419b4998
 java.lang.Class<android.media.MediaCodec$BufferInfo>
 W/dalvikvm( 1366):   Summary:
 W/dalvikvm( 1366):       423 of java.lang.Class (254 unique instances)
 W/dalvikvm( 1366):         1 of java.lang.Object
 W/dalvikvm( 1366):        17 of java.lang.String (17 unique instances)
 W/dalvikvm( 1366):       151 of java.lang.ref.WeakReference (151 unique
 instances)
 W/dalvikvm( 1366):         1 of android.content.res.AssetFileDescriptor
 W/dalvikvm( 1366):         1 of android.content.res.AssetManager
 W/dalvikvm( 1366):         2 of android.view.Surface (1 unique instances)
 W/dalvikvm( 1366):         2 of android.os.Handler (2 unique instances)
 W/dalvikvm( 1366):         1 of android.util.DisplayMetrics
 W/dalvikvm( 1366):         1 of android.view.Display
 W/dalvikvm( 1366):         1 of android.os.Bundle
 W/dalvikvm( 1366):         1 of android.view.Choreographer
 W/dalvikvm( 1366):         1 of
 android.app.ActivityThread$ApplicationThread
 W/dalvikvm( 1366):         3 of
 android.app.LoadedApk$ReceiverDispatcher$InnerReceiver (3 unique
 instances)
 W/dalvikvm( 1366):         1 of android.app.SharedPreferencesImpl
 W/dalvikvm( 1366):         1 of
 android.hardware.input.InputManager$InputDevicesChangedListener
 W/dalvikvm( 1366):         1 of
 android.app.SharedPreferencesImpl$EditorImpl
 W/dalvikvm( 1366):         1 of android.hardware.input.InputManager
 W/dalvikvm( 1366):         1 of android.os.HandlerThread
 W/dalvikvm( 1366):         1 of android.location.LocationManager
 W/dalvikvm( 1366):         1 of
 android.hardware.display.DisplayManagerGlobal$DisplayManagerCallback
 W/dalvikvm( 1366):         2 of android.hardware.display.DisplayManager (1
 unique instances)
 W/dalvikvm( 1366):         1 of android.opengl.EGLSurface
 W/dalvikvm( 1366):         1 of android.opengl.EGLContext
 W/dalvikvm( 1366):         1 of android.opengl.EGLDisplay
 W/dalvikvm( 1366):         1 of android.media.MediaCodec
 W/dalvikvm( 1366):         1 of android.media.AudioManager
 W/dalvikvm( 1366):         2 of
 android.view.Choreographer$FrameDisplayEventReceiver (2 unique instances)
 W/dalvikvm( 1366):         1 of android.view.SurfaceView$MyWindow
 W/dalvikvm( 1366):         1 of android.view.ViewRootImpl$W
 W/dalvikvm( 1366):         1 of
 android.view.accessibility.AccessibilityManager$1
 W/dalvikvm( 1366):         1 of
 android.view.inputmethod.InputMethodManager$1
 W/dalvikvm( 1366):         1 of
 android.view.inputmethod.InputMethodManager$ControlledInputConnectionWrapper
 W/dalvikvm( 1366):         3 of com.unity3d.player.UnityPlayerActivity (1
 unique instances)
 W/dalvikvm( 1366):         1 of com.unity3d.player.UnityPlayer
 W/dalvikvm( 1366):         1 of com.unity3d.player.Camera2Wrapper
 W/dalvikvm( 1366):         1 of $Proxy0
 W/dalvikvm( 1366):         1 of $Proxy1
 W/dalvikvm( 1366):         1 of $Proxy2
 W/dalvikvm( 1366):         2 of $Proxy3 (2 unique instances)
 W/dalvikvm( 1366):         1 of $Proxy4
 W/dalvikvm( 1366):         1 of android.media.MediaFormat
 W/dalvikvm( 1366):         1 of $Proxy5
 W/dalvikvm( 1366):         1 of org.fmod.FMODAudioDevice
 W/dalvikvm( 1366):         1 of $Proxy6
 W/dalvikvm( 1366):         1 of android.media.MediaRouter
 W/dalvikvm( 1366):         1 of android.media.MediaRouter$Static$1
 W/dalvikvm( 1366):         1 of android.media.MediaRouter$Static$Client
 W/dalvikvm( 1366):         1 of $Proxy7
 W/dalvikvm( 1366):     50554 of java.nio.ByteBuffer[] (4 elements) (50554
 unique instances)
 E/dalvikvm( 1366): Failed adding to JNI global ref table (51200 entries)
 }}}


 You can see 50554 of java nio bytebuffer in jni global ref table
 and i found av_mediacodec create a inputbuffer by
 ff_AMediaCodec_getInputBuffer at mediacodec_wrapper.c

 This inputbuffer didn't DeleteGlobalRef when MediaCodec deleted

--
Ticket URL: <https://trac.ffmpeg.org/ticket/8607>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list