SDK or BrightScript Changes Between Roku 2 and Roku 3

I have a BrightScript file that’s used in registration and activation of Roku boxes for a private channel subscription. It was written about 2 years ago. It continues to work fine with Roku 2 models. However, when used with any of the Roku 3 models, it aborts. There is no change indicated in the Roku SDK that explains this behavior. I have copied the debugger output, below. I know it is of limited value in troubleshooting this issue. If possible, I appreciate receiving an email address to which I could send the actual brs file (or the complete app).
Thank you.


------ Running ------
?BrightScript Micro Debugger.
Enter any BrightScript statement, debug commands, or HELP.

Current Function:
106: Function showRegDialog(infotype) As Integer
107:    regDialog = createobject("roMessageDialog")
108:    regDialog.setmessageport(createobject("roMessagePort"))
109:    regDialog.enableoverlay(true)
110:
111:    if (infotype = 0)
112:            regDialog.setTitle("supermediaplex")
113:            regDialog.settext("Are you a supermediaplex subscriber?")
114:            regDialog.addbutton(0,"Yes")
115:            regDialog.addbutton(1,"No")
116:
117:    elseif (infotype = 1)
118:            regDialog.setTitle("It's easy to get started.")
119:            regDialog.settext("Go to your Internet browser and visit: http://WWW.SUPERMEDIAPLEX.COM")
120:            regDialog.addbutton(0,"Done")
121:    endif
122:    regDialog.show()
123:    while true
124:            msg = wait(0,regDialog.GetMessagePort())
125:            if msg.isscreenclosed() return -1
126:            if msg.isButtonInfo() return -1   ' Info pressed again, dismiss the info overlay
127:            if msg.isbuttonpressed() and infotype=0 then
128:                    button = msg.getindex()
129:                    print "Info Button ";button;" pressed"
130:                    if button = 1 then
131:                            isReady = ShowDialog2Buttons("Ready to get start ed?","","Yes","No")
132:                            if isReady = 0 then
133:                                    showRegDialog(1)
134:                            endif
135:                            return 1
136:                    else
137:                            return 0
138:                    endif
139:            elseif msg.isbuttonpressed() and infotype=1 then
140:                    return 1
141:            endif
142:    end while
143: end function
Break in 124
124:            msg = wait(0,regDialog.GetMessagePort())
Backtrace:
Function showregdialog(infotype As Dynamic) As Integer
   file/line: /tmp/plugin/DDAAAAOnTdvz/pkg:/source/regScreen.brs(124)
Function doregistration() As Integer
   file/line: /tmp/plugin/DDAAAAOnTdvz/pkg:/source/regScreen.brs(35)
Function preshowhomescreen(breada As Dynamic, breadb As Dynamic) As Object
   file/line: /tmp/plugin/DDAAAAOnTdvz/pkg:/source/appHomeScreen.brs(12)
Function main() As Void
   file/line: /tmp/plugin/DDAAAAOnTdvz/pkg:/source/appMain.brs(20)

Local Variables:
infotype &h0002 Integer val:0
global   &h0020 rotINTERFACE:ifGlobal
m        &h0010 bsc:roAssociativeArray, refcnt=5
regdialog &h0010 bsc:roMessageDialog, refcnt=1
msg      &h0000 <uninitialized> val:Uninitialized
button   &h0000 <uninitialized> val:Uninitialized
isready  &h0000 <uninitialized> val:Uninitialized
BrightScript Debugger> ------ Running ------

In my .brs file, line 124 and subsequent lines referenced in the debugger are scripted as follows:

		msg = wait(0,regDialog.GetMessagePort())
		if msg.isscreenclosed() return -1
		if msg.isButtonInfo() return -1   ' Info pressed again, dismiss the info overlay
		if msg.isbuttonpressed() and infotype=0 then
			button = msg.getindex()
			print "Info Button ";button;" pressed"
			if button = 1 then
				isReady = ShowDialog2Buttons("Ready to get started?","","Yes","No")
				if isReady = 0 then
					showRegDialog(1)
				endif
				return 1
			else
				return 0
			endif