Try adding a short Sleep() immediately after closing the canvas. Show and Close aren't synchronous, so it may be that the canvas doesn't have sufficient time to close before you open the roScreen. It could also be an anomaly with roScreen that's related to this statement in the SDK documentation:
"http wrote:
Once an roScreen is created, the display stack enters "Game Mode", and other screen components cannot be used. Other screen components cannot be intermixed with roScreens as the roScreen display stack is maintained independently from the main screen component display stack.
My Channels: http://roku.permanence.com - Twitter: @TheEndlessDev
Instant Watch Browser (NetflixIWB), Aquarium Screensaver (AQUARIUM), Clever Clocks Screensaver (CLEVERCLOCKS), iTunes Podcasts (ITPC), My Channels (MYCHANNELS)