serial crashing

a user of an app of mine reported that “all at once” the app started crashing when initializing a USB device (Prolific). The app had been working for years, so both user and myself are in the fog. He run the app in Maverick and El Capitan.
I ask him to restore things via Time Machine, but he never made any backup. He reinstalled the Prolific drivers several times, yet he still reports hard crashes, sometime forcing him to reboot his mac.
As for me, I run El Capitan, but I don’t have the Prolific device, so I don’t get any crash.
Xojo 16 1.1

I uploaded a mini-project at dropbox, at

BTW, the source is here below. Suggestions welcome. Thank you.

  1. popupmenu open event:

Sub Open() if system.serialPortCount > 0 then for i as Integer = 0 to System.SerialPortCount-1 me.addrow System.SerialPort(i).name next else me.addrow "No modem" end if me.ListIndex = 0 End Sub

  1. popupmenu change event:

Sub Change() Label1.text = "" Label1.Refresh checkPort me.ListIndex End Sub

prefsSerial is a property of the window containing the following code:

[code]Sub checkPort(idx as integer)
prefSerial = new Serial
prefSerial.SerialPort = System.SerialPort(idx)
//MsgBox “Serial ports: " + str(System.serialPortCount)
dim foundModem as Boolean
if prefSerial.Open then
prefSerial.Baud = 8// 9600 bps
prefSerial.write “ATI3” + chr(13)
dim tStart as integer = Ticks
dim response as string
dim c as String = “OK”+chr(13)+chr(10)
do until ticks-tStart > 300 // 5 secs max
if InStr(prefSerial.LookAhead, c)>0 then
response = prefSerial.ReadAll
end if
//MsgBox “Response 1: " + response
if InStr(Response, “OK”) > 0 or Response <> “” then
foundModem = true
dim s as string = “AT&FI6”
prefSerial.write s + chr(13)
tStart = Ticks
do until ticks-tStart > 300 // 5 secs max
if InStr(prefSerial.LookAhead, c) > 0 then
response = response + prefSerial.ReadAll
end if
//MsgBox “Response 2: " + response
response = replace(response, “ATI3”, “”)
response = replaceAll(response, “OK”, “”)
dim a as string = nthField(response, s, 1)
dim b as string = nthField(response, s, 2)
dim i as Integer
for i = 0 to 32
a = ReplaceAll(a, chr(i),””)
for i = 0 to 31
b = ReplaceAll(b, chr(i),”")
for i = 0 to 10
b = ReplaceAll(b, “**”,"
b = nthField(b, “", countfields(b,"”)-1)
label1.text = a + " - " + b
label1.text = “No response.”
end if
end if
if foundModem then
prefSerial.write “AT&F” + chr(13)
end if

MsgBox “Error modem.”
End Sub