GetStream / stream-chat-android

:speech_balloon: Android Chat SDK ➜ Stream Chat API. UI component libraries for chat apps. Kotlin & Jetpack Compose messaging SDK for Android chat
https://getstream.io/chat/sdk/android/
Other
1.45k stars 272 forks source link

[MessageInputView] Sometimes crashes when a GIF is tapped from keyboard #1550

Closed rupinderjeet closed 3 years ago

rupinderjeet commented 3 years ago

Choosing any gif/sticker file from keyboard causes the crash.

Device: Samsung Galaxy A50 using Samsung Keyboard

Here's the crash log:

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:506)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)

     Caused by: java.lang.reflect.InvocationTargetException
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100) 

     Caused by: java.io.FileNotFoundException: /data/user/0/com.appname.chat/cache/STREAM_114831131/image/gif.gif: open failed: ENOENT (No such file or directory)
        at libcore.io.IoBridge.open(IoBridge.java:496)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:235)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:186)
        at com.getstream.sdk.chat.utils.StorageHelper.getCachedFileFromUri(StorageHelper.kt:41)
        at com.getstream.sdk.chat.view.messageinput.MessageInputController.sendNormalMessage(MessageInputController.kt:100)
        at com.getstream.sdk.chat.view.messageinput.MessageInputController.onSendMessageClick$stream_chat_android_release(MessageInputController.kt:87)
        at com.getstream.sdk.chat.view.messageinput.MessageInputView.onSendMessage(MessageInputView.kt:281)
        at com.getstream.sdk.chat.view.messageinput.MessageInputView.sendGifFromKeyboard(MessageInputView.kt:350)
        at com.getstream.sdk.chat.view.messageinput.MessageInputView.access$sendGifFromKeyboard(MessageInputView.kt:47)
        at com.getstream.sdk.chat.view.messageinput.MessageInputView$configInputEditText$3.onCommitContent(MessageInputView.kt:207)
        at androidx.core.view.inputmethod.InputConnectionCompat$1.commitContent(InputConnectionCompat.java:275)
        at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:566)
        at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:89)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:237)
        at android.app.ActivityThread.main(ActivityThread.java:8167)
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100) 

     Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
        at libcore.io.Linux.open(Native Method)
        at libcore.io.ForwardingOs.open(ForwardingOs.java:167)
        at libcore.io.BlockGuardOs.open(BlockGuardOs.java:252)
        at libcore.io.ForwardingOs.open(ForwardingOs.java:167)
        at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:8044)
        at libcore.io.IoBridge.open(IoBridge.java:482)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:235) 
        at java.io.FileOutputStream.<init>(FileOutputStream.java:186) 
        at com.getstream.sdk.chat.utils.StorageHelper.getCachedFileFromUri(StorageHelper.kt:41) 
        at com.getstream.sdk.chat.view.messageinput.MessageInputController.sendNormalMessage(MessageInputController.kt:100) 
        at com.getstream.sdk.chat.view.messageinput.MessageInputController.onSendMessageClick$stream_chat_android_release(MessageInputController.kt:87) 
        at com.getstream.sdk.chat.view.messageinput.MessageInputView.onSendMessage(MessageInputView.kt:281) 
        at com.getstream.sdk.chat.view.messageinput.MessageInputView.sendGifFromKeyboard(MessageInputView.kt:350) 
        at com.getstream.sdk.chat.view.messageinput.MessageInputView.access$sendGifFromKeyboard(MessageInputView.kt:47) 
        at com.getstream.sdk.chat.view.messageinput.MessageInputView$configInputEditText$3.onCommitContent(MessageInputView.kt:207) 
        at androidx.core.view.inputmethod.InputConnectionCompat$1.commitContent(InputConnectionCompat.java:275) 
        at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:566) 
        at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:89) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:237) 
        at android.app.ActivityThread.main(ActivityThread.java:8167) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100) 

2021-03-13 11:49:24.512 E/Chat:Events: onFailure: java.io.EOFException
2021-03-13 11:49:24.514 E/Chat:Events: java.io.EOFException

        at okio.RealBufferedSource.require(RealBufferedSource.kt:199)
        at okio.RealBufferedSource.readByte(RealBufferedSource.kt:209)
        at okhttp3.internal.ws.WebSocketReader.readHeader(WebSocketReader.kt:119)
        at okhttp3.internal.ws.WebSocketReader.processNextFrame(WebSocketReader.kt:102)
        at okhttp3.internal.ws.RealWebSocket.loopReader(RealWebSocket.kt:293)
        at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:195)
        at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:519)
        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:919)

2021-03-13 11:49:24.517 E/Chat:SocketService: Status code: -1, with stream code: 1003, description: See stack trace in logs. Intercept error in error handler of setUser
2021-03-13 11:49:24.518 E/Chat:SocketService: java.io.EOFException
        at okio.RealBufferedSource.require(RealBufferedSource.kt:199)
        at okio.RealBufferedSource.readByte(RealBufferedSource.kt:209)
        at okhttp3.internal.ws.WebSocketReader.readHeader(WebSocketReader.kt:119)
        at okhttp3.internal.ws.WebSocketReader.processNextFrame(WebSocketReader.kt:102)
        at okhttp3.internal.ws.RealWebSocket.loopReader(RealWebSocket.kt:293)
        at okhttp3.internal.ws.RealWebSocket$connect$1.onResponse(RealWebSocket.kt:195)
        at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:519)
        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:919)
JcMinarro commented 3 years ago

Thanks for the report it We will investigate what is the issue with this keyboard app.

adasiewiczr commented 3 years ago

Hey @rupinderjeet, thanks for reporting this issue. It has been fixed in the PR mentioned above and will be shipped in the next release.

JcMinarro commented 3 years ago

Hello @rupinderjeet It has been fixed and it is ready on the last release Could you check it?