Bug 434348

Summary: Crash in com.google.android.mms.pdu_alt.PduPersister.load(PduPersister.java:675)
Product: [Applications] kdeconnect Reporter: Simon Redman <simon>
Component: messaging-applicationAssignee: Simon Redman <simon>
Status: RESOLVED FIXED    
Severity: crash    
Priority: NOR    
Version First Reported In: unspecified   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Android 10.x   
Latest Commit: Version Fixed In: edd9d0d8af1af7bb6c918f598b8f21e8c2617039
Sentry Crash Report:

Description Simon Redman 2021-03-13 03:00:39 UTC
SUMMARY

There is a reproducable crash in the Android application with the following stack trace:

```
E/AndroidRuntime: FATAL EXCEPTION: Thread-13
    Process: org.kde.kdeconnect_tp, PID: 8669
    java.lang.AssertionError
        at com.google.android.mms.pdu_alt.PduPersister.load(PduPersister.java:675)
        at org.kde.kdeconnect.Helpers.SMSHelper.getMessagePdu(SMSHelper.java:756)
        at org.kde.kdeconnect.Helpers.SMSHelper.parseMMS(SMSHelper.java:702)
        at org.kde.kdeconnect.Helpers.SMSHelper.getMessages(SMSHelper.java:330)
        at org.kde.kdeconnect.Helpers.SMSHelper.getMessagesInRange(SMSHelper.java:201)
        at org.kde.kdeconnect.Plugins.SMSPlugin.SMSPlugin.handleRequestSingleConversation(SMSPlugin.java:526)
        at org.kde.kdeconnect.Plugins.SMSPlugin.SMSPlugin.onPacketReceived(SMSPlugin.java:401)
        at org.kde.kdeconnect.Device.onPacketReceived(Device.java:570)
        at org.kde.kdeconnect.Backends.BaseLink.packageReceived(BaseLink.java:70)
        at org.kde.kdeconnect.Backends.LanBackend.LanLink.receivedNetworkPacket(LanLink.java:248)
        at org.kde.kdeconnect.Backends.LanBackend.LanLink.lambda$reset$0(LanLink.java:97)
        at org.kde.kdeconnect.Backends.LanBackend.LanLink.lambda$reset$0$LanLink(Unknown Source:0)
        at org.kde.kdeconnect.Backends.LanBackend.-$$Lambda$LanLink$u8LWlVA_uGoxlkxdXMbWulE13kY.run(Unknown Source:4)
        at java.lang.Thread.run(Thread.java:919)
I/Process: Sending signal. PID: 8669 SIG: 9
Disconnected from the target VM, address: 'localhost:39269', transport: 'socket'
```

This happens on exactly one (that I have found) of my conversations and on exactly the same message every time.

On further inspection, this assert is failing because a message which should *not* already exist in the cache (because of some feature of the message) has been re-created.

On further inspection, the PDU which is failing has type "PduHeaders.MESSAGE_TYPE_SEND_REQ", so it hits this branch: https://github.com/klinker41/android-smsmms/blob/f6fa7d379444dc11d700fe6178b418bd76cfb88f/library/src/main/java/com/google/android/mms/pdu_alt/PduPersister.java#L637

I do not know why this message is any different than any other. I suspect some corruption of my MMS database.

STEPS TO REPRODUCE
1. Wave magic wand to cause MMS message with PDU msgType == MESSAGE_TYPE_SEND_REQ
2. Attempt to load this message with the KDE Connect SMS app (or similar)

OBSERVED RESULT

KDE Connect Android app crashes. The KDE Connect SMS app never updates

EXPECTED RESULT

KDE Connect Android app should not crash, the SMS app should update.

SOFTWARE/OS VERSIONS
Android 10
OnePlus 6T
Comment 1 Bug Janitor Service 2021-03-13 03:17:22 UTC
A possibly relevant merge request was started @ https://invent.kde.org/network/kdeconnect-android/-/merge_requests/239
Comment 2 Simon Redman 2021-04-16 03:41:19 UTC
Fixed in edd9d0d8af1af7bb6c918f598b8f21e8c2617039