Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Android - Chat - App crashed after send a second message #10751

Closed
kbecciv opened this issue Sep 1, 2022 · 11 comments
Closed

Android - Chat - App crashed after send a second message #10751

kbecciv opened this issue Sep 1, 2022 · 11 comments
Assignees
Labels
DeployBlockerCash This issue or pull request should block deployment Engineering Hourly KSv2

Comments

@kbecciv
Copy link

kbecciv commented Sep 1, 2022

If you haven’t already, check out our contributing guidelines for onboarding and email [email protected] to request to join our Slack channel!


Issue found when executing PR #10717

Action Performed:

  1. Launch the app
  2. Log in with expensifail account
  3. Select any user
  4. Send first message
  5. Send second message

Expected Result:

Able to send second message

Actual Result:

App crashed after send a second message

Workaround:

Unknown

Platform:

Where is this issue occurring?

  • Android

Version Number: 1.1.96.0

Reproducible in staging?: Yes

Reproducible in production?: No

Email or phone of affected tester (no customers): any

Logs: https://stackoverflow.com/c/expensify/questions/4856

Notes/Photos/Videos: Any additional supporting documentation

Screen_Recording_20220901-102920_New.Expensify.mp4

Expensify/Expensify Issue URL:

Issue reported by: Applause - Internal Team

Slack conversation:

View all open jobs on GitHub

@kbecciv kbecciv added the DeployBlockerCash This issue or pull request should block deployment label Sep 1, 2022
@OSBotify
Copy link
Contributor

OSBotify commented Sep 1, 2022

👋 Friendly reminder that deploy blockers are time-sensitive ⏱ issues! Check out the open StagingDeployCash deploy checklist to see the list of PRs included in this release, then work quickly to do one of the following:

  1. Identify the pull request that introduced this issue and revert it.
  2. Find someone who can quickly fix the issue.
  3. Fix the issue yourself.

@melvin-bot
Copy link

melvin-bot bot commented Sep 1, 2022

Triggered auto assignment to @arosiclair (Engineering), see https://stackoverflow.com/c/expensify/questions/4319 for more details.

@roryabraham
Copy link
Contributor

Didn't see a new crash in Firebase Crashlytics 😞

@roryabraham
Copy link
Contributor

looking into this, going to see if I can reproduce it

@roryabraham roryabraham self-assigned this Sep 1, 2022
@roryabraham
Copy link
Contributor

Have been wrestling dev environment on my new laptop, haven't really been able to test this just yet

@arosiclair
Copy link
Contributor

No repro in dev with latest on main and android emulator. Currently I only have 1.1.91-1 on my physical android device so I can't test the right version there

@luacmartins
Copy link
Contributor

I can repro on android simulator latest main. Logs don't seem that useful:

 DEBUG  [info] [Report] Handled onyxApiUpdate event sent by Pusher - [{"onyxMethod":"merge","key":"report_6","value":{"reportID":6,"maxSequenceNumber":28,"notificationPreference":"always","lastMessageTimestamp":1662062761,"lastMessageText":"hi","lastActorEmail":"[email protected]"}},{"onyxMethod":"merge","key":"reportActions_6","value":{"28":{"person":[{"type":"TEXT","style":"strong","text":"Carlo"}],"actorEmail":"[email protected]","actorAccountID":2,"message":[{"type":"COMMENT","html":"hi","text":"hi","isEdited":false}],"originalMessage":{"clientID":"1662062756074327","html":"hi"},"avatar":"https://d2g02b6ed2w9fz.cloudfront.net/aad50b94efd465890bd4ed9318802ead67aa5a97_128.jpeg","created":"Sep 1 2022 1:06pm PDT","timestamp":1662062761,"automatic":false,"sequenceNumber":28,"actionName":"ADDCOMMENT","shouldShow":true,"clientID":"1662062756074327","reportActionID":"1693760850663578759","isAttachment":false},"1662062756074327":null}}]
 DEBUG  [info] Finished API request - {"command":"AddComment","jsonCode":200,"requestID":"HFy4kL"}
 DEBUG  [info] [Onyx] set() called for key: networkRequestQueue properties:  - ""
 DEBUG  [info] [Onyx] set() called for key: report_6 properties: reportID,reportName,chatType,ownerEmail,policyID,unreadActionCount,maxSequenceNumber,participants,isPinned,lastVisitedTimestamp,lastReadSequenceNumber,lastMessageTimestamp,lastMessageText,lastActorEmail,notificationPreference,stateNum,statusNum,oldPolicyName,visibility,isOwnPolicyExpenseChat,lastMessageHtml,hasDraft,isLoadingReportActions - ""
 DEBUG  [info] [Onyx] set() called for key: reportActions_6 properties: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28 - ""
 DEBUG  [info] [LOCAL_NOTIFICATION] No notification because comment is from the currently logged in user - ""
 DEBUG  [info] [Onyx] set() called for key: report_6 properties: reportID,reportName,chatType,ownerEmail,policyID,unreadActionCount,maxSequenceNumber,participants,isPinned,lastVisitedTimestamp,lastReadSequenceNumber,lastMessageTimestamp,lastMessageText,lastActorEmail,notificationPreference,stateNum,statusNum,oldPolicyName,visibility,isOwnPolicyExpenseChat,lastMessageHtml,hasDraft,isLoadingReportActions - ""
 DEBUG  [info] [Onyx] set() called for key: report_6 properties: reportID,reportName,chatType,ownerEmail,policyID,unreadActionCount,maxSequenceNumber,participants,isPinned,lastVisitedTimestamp,lastReadSequenceNumber,lastMessageTimestamp,lastMessageText,lastActorEmail,notificationPreference,stateNum,statusNum,oldPolicyName,visibility,isOwnPolicyExpenseChat,lastMessageHtml,hasDraft,isLoadingReportActions - ""
 DEBUG  [info] [Onyx] set() called for key: networkRequestQueue properties: 0 - ""
 DEBUG  [info] [Onyx] set() called for key: report_6 properties: reportID,reportName,chatType,ownerEmail,policyID,unreadActionCount,maxSequenceNumber,participants,isPinned,lastVisitedTimestamp,lastReadSequenceNumber,lastMessageTimestamp,lastMessageText,lastActorEmail,notificationPreference,stateNum,statusNum,oldPolicyName,visibility,isOwnPolicyExpenseChat,lastMessageHtml,hasDraft,isLoadingReportActions - ""
 DEBUG  [info] [Onyx] set() called for key: reportActions_6 properties: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,1662062776028466 - ""
 DEBUG  [info] [LOCAL_NOTIFICATION] No notification because comment is from the currently logged in user - ""
 DEBUG  [info] Making API request - {"command":"AddComment"}
 DEBUG  [info] [Onyx] set() called for key: report_6 properties: reportID,reportName,chatType,ownerEmail,policyID,unreadActionCount,maxSequenceNumber,participants,isPinned,lastVisitedTimestamp,lastReadSequenceNumber,lastMessageTimestamp,lastMessageText,lastActorEmail,notificationPreference,stateNum,statusNum,oldPolicyName,visibility,isOwnPolicyExpenseChat,lastMessageHtml,hasDraft,isLoadingReportActions - ""

@luacmartins
Copy link
Contributor

luacmartins commented Sep 1, 2022

This issue seems to be the same as #10759 and #10756

@roryabraham
Copy link
Contributor

Got logs for the crash:

2022-09-02 09:52:31.073 29627-29627/com.expensify.chat E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.expensify.chat, PID: 29627
    java.lang.IndexOutOfBoundsException: getChildDrawingOrder() returned invalid index 15 (child count is 9)
        at android.view.ViewGroup.getAndVerifyPreorderedIndex(ViewGroup.java:2098)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4286)
        at com.facebook.react.views.view.ReactViewGroup.dispatchDraw(ReactViewGroup.java:755)
        at android.view.View.updateDisplayListIfDirty(View.java:21570)
        at android.view.View.draw(View.java:22435)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4528)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)
        at android.view.View.draw(View.java:22707)
        at android.widget.ScrollView.draw(ScrollView.java:1868)
        at com.facebook.react.views.scroll.ReactScrollView.draw(ReactScrollView.java:575)
        at android.view.View.updateDisplayListIfDirty(View.java:21579)
        at android.view.View.draw(View.java:22435)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4528)
        at com.facebook.react.views.view.ReactViewGroup.drawChild(ReactViewGroup.java:783)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)
        at com.facebook.react.views.view.ReactViewGroup.dispatchDraw(ReactViewGroup.java:755)
        at android.view.View.updateDisplayListIfDirty(View.java:21570)
        at android.view.View.draw(View.java:22435)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4528)
        at com.facebook.react.views.view.ReactViewGroup.drawChild(ReactViewGroup.java:783)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)
        at com.facebook.react.views.view.ReactViewGroup.dispatchDraw(ReactViewGroup.java:755)
        at android.view.View.updateDisplayListIfDirty(View.java:21570)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.View.draw(View.java:22435)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4528)
        at com.facebook.react.views.view.ReactViewGroup.drawChild(ReactViewGroup.java:783)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)
        at com.facebook.react.views.view.ReactViewGroup.dispatchDraw(ReactViewGroup.java:755)
        at android.view.View.updateDisplayListIfDirty(View.java:21570)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
2022-09-02 09:52:31.074 29627-29627/com.expensify.chat E/AndroidRuntime:     at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4512)
        at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4485)
        at android.view.View.updateDisplayListIfDirty(View.java:21535)
        at android.view.View.draw(View.java:22435)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4528)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)
        at com.facebook.react.ReactRootView.dispatchDraw(ReactRootView.java:291)
        at android.view.View.updateDisplayListIfDirty(View.java:21570)
        at android.view.View.draw(View.java:22435)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4528)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)
        at android.view.View.updateDisplayListIfDirty(View.java:21570)
        at android.view.View.draw(View.java:22435)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4528)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)
        at android.view.View.updateDisplayListIfDirty(View.java:21570)
        at android.view.View.draw(View.java:22435)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4528)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)
        at android.view.View.updateDisplayListIfDirty(View.java:21570)
        at android.view.View.draw(View.java:22435)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4528)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)
        at android.view.View.updateDisplayListIfDirty(View.java:21570)
        at android.view.View.draw(View.java:22435)
        at android.view.ViewGroup.drawChild(ViewGroup.java:4528)
        at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4289)
        at android.view.View.draw(View.java:22707)
        at com.android.internal.policy.DecorView.draw(DecorView.java:819)
        at android.view.View.updateDisplayListIfDirty(View.java:21579)
        at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:534)
        at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:540)
        at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:616)
2022-09-02 09:52:31.074 29627-29627/com.expensify.chat E/AndroidRuntime:     at android.view.ViewRootImpl.draw(ViewRootImpl.java:4531)
        at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:4251)
        at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3374)
        at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2179)
        at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8793)
        at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1037)
        at android.view.Choreographer.doCallbacks(Choreographer.java:845)
        at android.view.Choreographer.doFrame(Choreographer.java:780)
        at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1022)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loopOnce(Looper.java:201)
        at android.os.Looper.loop(Looper.java:288)
        at android.app.ActivityThread.main(ActivityThread.java:7870)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)

@roryabraham
Copy link
Contributor

Maybe related:

Warning: Encountered two children with the same key

@kbecciv
Copy link
Author

kbecciv commented Sep 2, 2022

@roryabraham Issue is not reproduced with version 1.1.96.5

Screen_Recording_20220902-085851_New.Expensify.mp4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
DeployBlockerCash This issue or pull request should block deployment Engineering Hourly KSv2
Projects
None yet
Development

No branches or pull requests

5 participants