Ticket Created
over 5 years ago

WERETECH-7626

System error with makeWebRequest() if using an array in the request parameters

July 20, 2019 update.  Found out that I was passing an array into the Parameters dictionary as one of the fields.  Depending on the version of GCM, this can create very unpredictable results on a real device.  The the results of passing the array ranged from a IQ! crash, to no parameters being passed to the web service.  The fix was pretty simple, format the output of the array and pass the resulting string into the Parameters 

-------

In preparations for a planned update to my app and potential transition to a trial/paid app, I started to implement some usage statistics to get a better idea on which devices are most popular and a better idea on daily usage rates to determine which tier of service I will need once I make the switch to a paid version of the app.  After the update I got a report from a Edge 830 user who experienced an IQ! crash.  They sent me the CIQ_LOG.YML file and I was able to trace the crash back to the makeWebRequest().  Since I had not played with the ERA tool yet, I decided to use this opportunity to check it out.  I do have to say great job with the tool.  It is nice to be able to see the number of times and which devices experience the same crash.  Below is the ERA output for the crash

Error Name: System Error
Occurrences: 50
First Occurrence: 2019-07-15
Last Occurrence: 2019-07-18
Devices:
Edge® 1030
vívoactive® 3 Music
Edge® 530
Edge® 830
006-B3163-00
Device Firmware Versions: 3.50, 3.80, 4.20, 4.50, 7.50
App Version: 3.12
Languages: cht, deu, eng, fre, jpn, pol, spa
Backtrace:
Rez.MainLayout:43
auth.RadarInst:42
WUradarApp.onStart:28

WUradarApp line 28 is the link to run Auth.RadarInst.

Below is line 42 in Auth.RadarInst.

After doing some troubleshooting with the user, I know he is using an Iphone 6s.  Disabling the BT connection will allow the app to run, but since the stats upload and image request both use the Internet, it is not much help.  Un-installing the app and reinstalling did not make an difference, nor did un-pairing and repairing the phone.  I thought that may reset something that got corrupted in the BT link either with the edge or the Iphone.  based on the ERA, I am seeing this on 5 different device types but only a small number of times considering the number of downloads I have seen in the past few days.

It does not appear to be code related as there are other Edge 830 users not affected, but I don't know what phone they are using or if there is something going on with the phone side of the makeWebRequest.  Any suggestions are welcome.

Parents
  •  I haven't seen any System errors, but I have run into quite a few issues with using arrays in parameters. I have seen empty parameters arrive at the server with IOS and I have seen some unexpected values with Android as well. I've pushed this along to the engineering team to fix. Hopefully fixing the other issues will resolve the System error even though I wasn't able to reproduce it.

Comment
  •  I haven't seen any System errors, but I have run into quite a few issues with using arrays in parameters. I have seen empty parameters arrive at the server with IOS and I have seen some unexpected values with Android as well. I've pushed this along to the engineering team to fix. Hopefully fixing the other issues will resolve the System error even though I wasn't able to reproduce it.

Children
  • thanks for the response.  After I figured out what was going on with the arrays, I have modified my code to be sure I represent anything I send as a parameter is formatted into a safe string so that I can maintain control over what gets passed to the web server.  Since doing that I have not seen any more crashes.  I have also seen my empty data logs decrease as users upgrade to the newer version.  It may be worth while to add a not to the documentation that makeWebRequest parameters should not use arrays without formatting the array data.