I was doing a simple test and could not see the crash on GetBalloonDisplayedText. The text returned was " Link?R -1", but the GetTerminator method throws an exception, if the the balloon was not linked.
Are you catching any COM exceptions in your code? Maybe SE crashes as you did not catch the exception.
I agree that GetBalloonDisplayedText should not crash or raise an exception, if the balloon is not linked. The same should be the case for the GetTerminator method.
I was trying to check for any linked object first by calling GetTerminator and expecting a NULL pointer returned in the first parameter, if there is no linked object.