View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002535 | FSSCP | sound | public | 2011-11-04 13:28 | 2011-11-05 07:08 |
Reporter | m_m | Assigned To | Echelon9 | ||
Priority | normal | Severity | crash | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Product Version | 3.6.13 | ||||
Fixed in Version | 3.6.14 | ||||
Summary | 0002535: Game crashes in player select menu | ||||
Description | The game crashes when the game switches to state GS_STATE_INITIAL_PLAYER_SELECT (see stacktrace below) as it tries to index the Sounds vector with an invalid index when it tries to play a looping sound (see sound.cpp, line 801). This can be fixed by setting the game_snd id to -1 in its constructor so the vector doesn't get indexed, patch is attached. | ||||
Additional Information | Stacktrace as generateded by Visual Studio: > fs2_open_3_6_13d_INF_SSE2.exe!snd_play_looping(game_snd * gs=0x0c23f060, float pan=0.00000000, int start_loop=-1, int stop_loop=-1, float vol_scale=1.0000000, int scriptingUpdateVolume=1) Line 801 + 0x17 bytes C++ fs2_open_3_6_13d_INF_SSE2.exe!main_hall_start_ambient() Line 1482 + 0x34 bytes C++ fs2_open_3_6_13d_INF_SSE2.exe!player_select_init() Line 230 C++ fs2_open_3_6_13d_INF_SSE2.exe!game_enter_state(int old_state=0, int new_state=37) Line 6378 C++ fs2_open_3_6_13d_INF_SSE2.exe!gameseq_set_state(int new_state=37, int override=0) Line 282 + 0x18 bytes C++ fs2_open_3_6_13d_INF_SSE2.exe!game_process_event(int current_state=0, int event=49) Line 5438 + 0x9 bytes C++ fs2_open_3_6_13d_INF_SSE2.exe!gameseq_process_events() Line 397 + 0x19 bytes C++ fs2_open_3_6_13d_INF_SSE2.exe!game_main(char * cmdline=0x00303452) Line 7084 + 0x5 bytes C++ fs2_open_3_6_13d_INF_SSE2.exe!WinMain(HINSTANCE__ * hInst=0x00400000, HINSTANCE__ * hPrev=0x00000000, char * szCmdLine=0x00303452, int nCmdShow=1) Line 7153 + 0x9 bytes C++ fs2_open_3_6_13d_INF_SSE2.exe!__tmainCRTStartup() Line 275 + 0x2c bytes C fs2_open_3_6_13d_INF_SSE2.exe!WinMainCRTStartup() Line 189 C kernel32.dll!7588ed6c() [Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll] ntdll.dll!777537f5() ntdll.dll!777537c8() | ||||
Tags | No tags attached. | ||||
2011-11-04 13:28
|
sound.h.patch (393 bytes)
Index: code/sound/sound.h =================================================================== --- code/sound/sound.h (revision 7943) +++ code/sound/sound.h (working copy) @@ -46,7 +46,7 @@ game_snd( ) : sig ( 0 ), default_volume( 0 ), - preload( 0 ), id( 0 ), id_sig( 0 ), flags( 0 ) + preload( 0 ), id( -1 ), id_sig( 0 ), flags( 0 ) { filename[ 0 ] = NULL; min = 0; |
2011-11-04 17:40
|
gameSndStruct.svn.patch (1,718 bytes)
Index: code/sound/sound.h =================================================================== --- code/sound/sound.h +++ code/sound/sound.h @@ -33,24 +33,32 @@ #define AAV_VOICE 1 #define AAV_EFFECTS 2 +/** + * Game level sound entities + */ typedef struct game_snd { - int sig; // index number of sound in as specified in sounds.tbl - char filename[MAX_FILENAME_LEN]; - float default_volume; // range: 0.0 -> 1.0 - int min, max; // min: distance at which sound will stop getting louder max: distance at which sound is inaudible - int preload; // preload sound (ie read from disk before mission starts) - int id; // index into Sounds[], where sound data is stored - int id_sig; // signature of Sounds[] element + int sig; //!< index number of sound in as specified in sounds.tbl + char filename[MAX_FILENAME_LEN]; + float default_volume; //!<range: 0.0 -> 1.0 + int min; //!<distance at which sound will stop getting louder + int max; //!<distance at which sound is inaudible + int preload; //!< preload sound (ie read from disk before mission starts) + int id; //!< index into Sounds[], where sound data is stored + int id_sig; //!< signature of Sounds[] element int flags; game_snd( ) - : sig ( 0 ), default_volume( 0 ), - preload( 0 ), id( 0 ), id_sig( 0 ), flags( 0 ) + : sig ( -1 ), + default_volume( 0 ), + min( 0 ), + max( 0 ), + preload( 0 ), + id( -1 ), + id_sig( -1 ), + flags( 0 ) { - filename[ 0 ] = NULL; - min = 0; - max = 0; + filename[0] = 0; } } game_snd; @@ -172,4 +180,4 @@ int sound_env_supported(); // adjust-audio-volume void snd_aav_init(); -#endif \ No newline at end of file +#endif |
|
I had this change in a separate commit here on disk. :/ i hope this fixes all problems. |
|
Thanks both. Fixed in http://svn.icculus.org/fs2open?view=rev&revision=7945 |
Date Modified | Username | Field | Change |
---|---|---|---|
2011-11-04 13:28 | m_m | New Issue | |
2011-11-04 13:28 | m_m | File Added: sound.h.patch | |
2011-11-04 17:40 | Eli2 | File Added: gameSndStruct.svn.patch | |
2011-11-04 17:41 | Eli2 | Note Added: 0012925 | |
2011-11-05 07:08 | Echelon9 | Status | new => assigned |
2011-11-05 07:08 | Echelon9 | Assigned To | => Echelon9 |
2011-11-05 07:08 | Echelon9 | Note Added: 0012928 | |
2011-11-05 07:08 | Echelon9 | Status | assigned => resolved |
2011-11-05 07:08 | Echelon9 | Fixed in Version | => 3.6.14 |
2011-11-05 07:08 | Echelon9 | Resolution | open => fixed |