We have been experiencing claims since March 2021 that randomly clover 2018 devices will crash at the moment we attempt to close a payment. This also occurs in approx 1/2 of the 10 staging devices we have. We have implemented 2 things for all production merchants
1. Logging to trap a crash - we have accurate time stamps
and
2 A method to enable the payment to close again. (which is proving to be successful)
This frequency of crashes is indirectly related to the usage, but what is weird is the frequency of crashes is not common across all merchants.
The list of merchants affected since we implemented the logging is as per below.. this is expected to increase as we roll out the logging to another 200 merchants by the end of August.
This is NOT being detected/reported by about 60 merchants.. (of the 100 updated) the frequency of crashes varies from once per day to once every few hours. These merchants are running around 100 to 200 txns a day normally.
ZQB9VMRJ5X021
0E4APJ93NEEA1
0X086B9K4PW51
3030V12JVQBA1
32YTKN84K46G1
4B0T8HB98BXJ1
4NHK5NEP600N1
5C3YCV6K14GZ1
5P0P65R8QEGM1
6XE778H1HYKQ1
7FH44VAGPK2K1
AYWK6ZFWV61P1
B5MT85WG7K9T1
CK3TKYBE5CFC1
ES9QJQQFRVSW1
FAYAJZZMMPGT1
FBSNZ8CKWP3C1
FKHPZNVDVEXK1
FZDTG9M98FED1
G6MFT0YVHEW01
GXTZ6H17SC9E1
H4XH32G517FD1
KJWTSZ933MG41
KWWJH2Z61J431
M1ZXCFM1GN7S1
M3TQ62JGZZ3S1
M6M1KMMPBSX61
M7860NXAG3FB1
MNYNXWK1TPAC1
MX19HS08X9G81
P8R0HTJWQGDV1
QHFSQ48YHGAP1
QHFSQ48YHGAP1
QSWACM08DQ541
RR7BB2YAAQ471
S2J4PT2RSABPR
T3MEW3HMY96N1
VK7JZNYYWG2R1
VK7JZNYYWG2R1
W6ZEZ6BH51JK1
WD2EHM59YKDP1
WM8JR1T41TX01
XBQGMNX847DX1
Y9DJYVQ386N31
Code snippet is here.
val data = Intent().apply { putExtra(Intents.EXTRA_AMOUNT, amount) putExtra(Intents.EXTRA_CLIENT_ID, transactionId) putExtra(Intents.EXTRA_TAX_AMOUNT, taxAmount) putExtra(Intents.EXTRA_TIP_AMOUNT, tipAmount) putExtra(Intents.EXTRA_NOTE, "Transaction Id: $transactionId") putExtra(Intents.EXTRA_LINE_ITEM_PAYMENTS, lineItemPayments) } setResult(AppCompatActivity.RESULT_OK, data)
an example of the extras is here.
Bundle[{clover.intent.extra.CLIENT_ID=c729aaaa295e465f87392a3dd3d4fbf8, clover.intent.extra.TAX_AMOUNT=0, clover.intent.extra.NOTE=Transaction Id: c729aaaa295e465f87392a3dd3d4fbf8, clover.intent.extra.TIP_AMOUNT=0, clover.intent.extra.AMOUNT=450, clover.intent.extra.LINE_ITEM_PAYMENTS=[]}]
Crash report from ADB
Process: com.clover.payment.builder.pay, PID: 1902
java.lang.NullPointerException: Attempt to read from field ‘com.clover.core.api.tenders.MerchantTender com.clover.payment.common.TenderHolder.tender’ on a null object reference
at com.clover.payment.common.activities.AbstractMerchantPaymentActivity.handleTenderActivityResult(AbstractMerchantPaymentActivity.java:830)
at com.clover.payment.builder.pay.activities.PayActivity.onOrderLoadedActivityResult(PayActivity.java:1183)
at com.clover.common2.orders.BaseOrderActivity.dispatchActivityResult(BaseOrderActivity.java:769)
at com.clover.common2.orders.BaseOrderActivity.access$300(BaseOrderActivity.java:74)
at com.clover.common2.orders.BaseOrderActivity$8.run(BaseOrderActivity.java:744)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6121)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)