Bug 434348 - Crash in com.google.android.mms.pdu_alt.PduPersister.load(PduPersister.java:675)
Summary: Crash in com.google.android.mms.pdu_alt.PduPersister.load(PduPersister.java:675)
Status: RESOLVED FIXED
Alias: None
Product: kdeconnect
Classification: Applications
Component: messaging-application (other bugs)
Version First Reported In: unspecified
Platform: Compiled Sources Android 10.x
: NOR crash
Target Milestone: ---
Assignee: Simon Redman
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-03-13 03:00 UTC by Simon Redman
Modified: 2021-04-16 03:41 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In: edd9d0d8af1af7bb6c918f598b8f21e8c2617039
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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