Opened 5 months ago
Closed 5 months ago
#15233 closed defect (fixed)
SCI: PQ2: Airport music crash
Reported by: | ArthurWalden | Owned by: | sluicebox |
---|---|---|---|
Priority: | normal | Component: | Engine: SCI |
Version: | Keywords: | ||
Cc: | ArthurWalden | Game: | Police Quest 2 |
Description
I am using ScummVM version 2.8.1.
I am playing Police Quest 2 and my game keeps crashing. It started in the airport on the screen with the Siva car rental agency. Now it's happening repeatedly on that screen and in the restroom. The game just suddenly drops to Windows.
I am playing the English GOG version of the game.
I am running the game on Windows 10 Home, version 23H2.
Attachments (1)
Change History (10)
by , 5 months ago
follow-up: 3 comment:2 by , 5 months ago
Interesting. However, I'm not sure my audio settings have anything to do with it. None of the crashes had any error messages or in any way resemble what you describe. Instead, the game suddenly drops to windows.
One thing (that may also be what I experienced 20 years ago): I just started the game again, managed to get through the airport without crashing (had to do everything very efficiently), got back to the police station, and now the game appears stable again. The crashing all seemed to happen at the airport. Similarly, I haven't gotten to it on this playthrough yet, but I believe I had similar problems 20 years ago at the day 2 murder scene and maybe the motel. I think these crashes may be location specific.
In any case, I overrode global settings to set my game to VirtualMIDISynth #1 [Windows MIDI].
comment:3 by , 5 months ago
Replying to ArthurWalden:
Interesting. However, I'm not sure my audio settings have anything to do with it. None of the crashes had any error messages or in any way resemble what you describe. Instead, the game suddenly drops to windows.
You'll have to check the ScummVM log file for warning or error messages.
https://docs.scummvm.org/en/latest/help/report_bugs.html#logfile
Please note, you'll need to check the log file after the crash, and before relaunching ScummVM, since in most Operating Systems, this log file gets rewritten upon launching ScummVM.
comment:4 by , 5 months ago
This was all I saw:[2024-06-28 15:26:50] Vorbis FLAC MP3 RGB zLib MPEG2 FluidSynth Theora VPX AAC A/52 FreeType2 FriBiDi JPEG PNG GIF taskbar TTS cloud (servers, local) ENet SDL2 TinyGL OpenGL (with shaders)
It does not look like an error message.
comment:5 by , 5 months ago
A crash took a long while to happen when debugging via Visual Studio, but in the end I got one.
This was the "assertion failed" one mentioned above.
Call Stack looked like this at the time:
ucrtbased.dll!00007ff94ce7eaa5() Unknown Non-user code. Cannot find or open the PDB file. ucrtbased.dll!00007ff94ce7e8c3() Unknown Non-user code. Cannot find or open the PDB file. ucrtbased.dll!00007ff94ce8158f() Unknown Non-user code. Cannot find or open the PDB file. > scummvm.exe!Sci::MidiPlayer_Midi::setReverb(char reverb='8') Line 517 C++ Symbols loaded. scummvm.exe!Sci::MidiParser_SCI::processEvent(const EventInfo & info={...}, bool fireEvents=true) Line 794 C++ Symbols loaded. scummvm.exe!MidiParser::onTimer() Line 249 C++ Symbols loaded. scummvm.exe!Sci::MusicEntry::onTimer() Line 1073 C++ Symbols loaded. scummvm.exe!Sci::SciMusic::onTimer() Line 221 C++ Symbols loaded. scummvm.exe!Sci::SciMusic::miditimerCallback(void * p=0x00000163dced0b20) Line 207 C++ Symbols loaded. scummvm.exe!MidiDriver_Emulated::readBuffer(short * data=0x00000163ea165aa0, const int numSamples=512) Line 105 C++ Symbols loaded. scummvm.exe!Audio::RateConverter_Impl<1,1,0>::interpolateConvert(Audio::AudioStream & input={...}, short * outBuffer=0x00000163dcecd26c, unsigned int numSamples=1024, unsigned short volL=256, unsigned short volR=256) Line 218 C++ Symbols loaded. scummvm.exe!Audio::RateConverter_Impl<1,1,0>::convert(Audio::AudioStream & input={...}, short * outBuffer=0x00000163dceccf60, unsigned int numSamples=1024, unsigned short volL=256, unsigned short volR=256) Line 298 C++ Symbols loaded. scummvm.exe!Audio::Channel::mix(short * data=0x00000163dceccf60, unsigned int len=1024) Line 719 C++ Symbols loaded. scummvm.exe!Audio::MixerImpl::mixCallback(unsigned char * samples=0x00000163dceccf60, unsigned int len=1024) Line 331 C++ Symbols loaded. scummvm.exe!SdlMixerManager::callbackHandler(unsigned char * samples=0x00000163dceccf60, int len=4096) Line 205 C++ Symbols loaded. scummvm.exe!SdlMixerManager::sdlCallback(void * this_=0x00000163dcd77750, unsigned char * samples=0x00000163dceccf60, int len=4096) Line 212 C++ Symbols loaded. scummvm.exe!SDL_RunAudio(void * devicep=0x00000163dceeadd0) Line 737 C Symbols loaded. scummvm.exe!SDL_RunThread(void * data=0x00000163dcef4260) Line 289 C Symbols loaded. scummvm.exe!RunThread(void * data=0x00000163dcedba70) Line 91 C Symbols loaded. scummvm.exe!RunThreadViaCreateThread(void * data=0x00000163dcedba70) Line 100 C Symbols loaded. [External Code] Annotated Frame
The invalid reverb value in this case was 56 (ie. char value '8'). The assertion is made against the kReverbConfigNr which is 11.
Edit: Another crash, at another point in 2.9.0git via Visual Studio debugging (same saved game file, same scene):
"Exception thrown at 0x00007FF652CAB0AF in scummvm.exe: 0xC0000005: Access violation reading location 0x0000021B599D5140."
Call stack:
> scummvm.exe!MidiParser::processEvent(const EventInfo & info={...}, bool fireEvents=true) Line 289 C++ Symbols loaded. scummvm.exe!Sci::MidiParser_SCI::processEvent(const EventInfo & info={...}, bool fireEvents=true) Line 897 C++ Symbols loaded. scummvm.exe!MidiParser::onTimer() Line 249 C++ Symbols loaded. scummvm.exe!Sci::MusicEntry::onTimer() Line 1073 C++ Symbols loaded. scummvm.exe!Sci::SciMusic::onTimer() Line 221 C++ Symbols loaded. scummvm.exe!Sci::SciMusic::miditimerCallback(void * p=0x0000021a592c3800) Line 207 C++ Symbols loaded. scummvm.exe!MidiDriver_Emulated::readBuffer(short * data=0x0000021a59941080, const int numSamples=512) Line 105 C++ Symbols loaded. scummvm.exe!Audio::RateConverter_Impl<1,1,0>::interpolateConvert(Audio::AudioStream & input={...}, short * outBuffer=0x0000021a593d7964, unsigned int numSamples=1024, unsigned short volL=256, unsigned short volR=256) Line 218 C++ Symbols loaded. scummvm.exe!Audio::RateConverter_Impl<1,1,0>::convert(Audio::AudioStream & input={...}, short * outBuffer=0x0000021a593d7690, unsigned int numSamples=1024, unsigned short volL=256, unsigned short volR=256) Line 298 C++ Symbols loaded. scummvm.exe!Audio::Channel::mix(short * data=0x0000021a593d7690, unsigned int len=1024) Line 719 C++ Symbols loaded. scummvm.exe!Audio::MixerImpl::mixCallback(unsigned char * samples=0x0000021a593d7690, unsigned int len=1024) Line 331 C++ Symbols loaded. scummvm.exe!SdlMixerManager::callbackHandler(unsigned char * samples=0x0000021a593d7690, int len=4096) Line 205 C++ Symbols loaded. scummvm.exe!SdlMixerManager::sdlCallback(void * this_=0x0000021a59155660, unsigned char * samples=0x0000021a593d7690, int len=4096) Line 212 C++ Symbols loaded. scummvm.exe!SDL_RunAudio(void * devicep=0x0000021a5905b8a0) Line 737 C Symbols loaded. scummvm.exe!SDL_RunThread(void * data=0x0000021a593c5050) Line 289 C Symbols loaded. scummvm.exe!RunThread(void * data=0x0000021a592ac210) Line 91 C Symbols loaded. scummvm.exe!RunThreadViaCreateThread(void * data=0x0000021a592ac210) Line 100 C Symbols loaded. [External Code] Annotated Frame
comment:6 by , 5 months ago
Priority: | high → normal |
---|
antoniou79, great triaging! I wasn't able to reproduce any of this until you figured it out, because I have the default sound config. Now I get all the same results as you.
For the record this is game version 1.002.001. I believe the problem sound is 29.
A lot of suspicious things happening here. My approach to these hairy SCI0 sound issues has been to figure out as much as I can with scripts and debugging, reduce it down to the simplest case, and then present it to athrxx and beg him to solve it. =)
comment:9 by , 5 months ago
Keywords: | pq2 crash removed |
---|---|
Owner: | set to |
Resolution: | → fixed |
Status: | new → closed |
Summary: | SCI: PQ2: My Game Keeps Crashing → SCI: PQ2: Airport music crash |
Fixed in cf842571
This will appear in the next daily build. The attached save game should now play the suspense music correctly instead of only a few notes. It will also correctly loop the music at the end instead of stopping.
This also fixes the music that plays when entering the airport from the outside; it wouldn't loop, or it would have a large gap before looping, and it also might crash.
Thanks for reporting this!
Hello, could you please specify your audio settings (Global and Game specific) for the game, and any specific custom options for the game, eg. having enabled the "Prefer Digital Sound Effects" option.
I am testing on Windows 10, with a recent developer build of 2.9.0git and I do get some random crashes, starting from your saved game. I think the crashes may be related to the audio device settings. I have set my global audio device to be an MT-32 emulator, and I'm not overriding it for the game specifically.
So far I got 2 crashes -- I have to wait a while to get them -- a random interval seemingly, and I have left and re-entered the screen too. Sometimes, I don't get them at all (ie. I've waited up to 10 minutes and got no crash).
Also maybe related, on a rare occasion a single music note is played and then nothing.
At the point of crash:
For first crash, console output was:
It seems that the "WARNING: Ignoring MIDI event f0!" messages occur every once in a while (in that screen at least) and they are not necessarily leading to crash.
For the second crash I encountered, I just got:
Edit: I've also tested with 2.8.1 and Microsoft GS Wavetable Synth [Windows MIDI] audio device set for the game (which produces an early warning "WARNING: Game has no native support for General MIDI, applying auto-mapping!").
The log at the time of crash now was:
There were plenty of "WARNING: Ignoring MIDI event f0!" messages before the game crashed.
Another oddity to note. Loading from the provided saved game, I usually get a "drum" note and then nothing. But, only once so far, I actually got proper music, upon loading that saved game.