Yeah IDK I see a bunch of problems with sound in the theme. For instance this makes no sense: if (!DayLight) { Status = StartupSoundPlay(ThemeDir, L"sound_night.wav"); } if (EFI_ERROR(Status)) { Status = StartupSoundPlay(ThemeDir, L"sound.wav"); } It only plays the sound if it's not daylight or there is an error and it's daylight? This should be written differently. Seems that the entire purpose of CheckSyncSound() is to stop playing the sound when the GUI is active, but why? It's played synchronously so this should never happen. So this call probably will always cause a hang since it calls StopStream without even checking if it's playing. Also If AudioIo is not found then the check for the private data is invalid since (NULL - offset) is a really large number and fails the check that it's NULL. AudioIo should be checked if NULL first.