well, launching app from HBC won't produce this bug.
I have this bug when i launch from my loader.
You may tell "Ahh.. that's because your loader!", but it's not quite correct.
I suspect, it related to how loader organize its data before launch the app.
I remember, there is a space for copy of GX registers defined by gcc linker. Probably, if two consecutive apps are using the same place for this copy then bug won't happen. However, my launcher uses custom LD script to allocate other areas for some sections. In this case, launched app may get garbage in some areas. And without VIDEO_Init shutdown code of libogc crashes.
May be i can fix this bug from loader side by ressembling environment close to HBC, but it's not correct anyway.
Launched application shouldn't depend on launcher.
Future libogc versions could integrate VIDEO_Init() into initialization code (CRT?). So, at least apps won't be depend on each other.