View Issue Details

IDProjectCategoryView StatusLast Update
0002871FSSCPFREDpublic2020-07-07 15:48
ReporterFUBAR-BDHR Assigned ToGoober5000  
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
Product Version3.6.19 
Summary0002871: Invalid AI class on turret causes FRED to stop responding
DescriptionOpened up an old mission in FRED. Apparently the entire campaign was made at a time when the AI classes had different names. This hadn't been an issue with ships since the engine just defaults to the first AI class and then you can change it if you want. This mission in particular had the old AI classes assigned to turrets as well as the ship itself. FRED really doesn't like that. This needs to be caught, a warning thrown, and defaulted to valid values just like with the ship.
Steps To ReproduceOption 1:
Open FRED. Drop in a ship with turrets. Save mission. Assign invalid AI class to some of the turrets. Looks like this ability was removed from FRED probably because it didn't work so you will need to notepad them in. Open mission in FRED.

Option 2:
Open attached mission.
Additional InformationStack Dump:

     fred2_open_3_6_19_SSE2-DEBUG.exe!strlen(unsigned char * buf) Line 69 Asm
     fred2_open_3_6_19_SSE2-DEBUG.exe!std::char_traits<char>::length(const char * _First) Line 491 + 0x9 bytes C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!std::basic_string<char,std::char_traits<char>,SCP_vm_allocator<char> >::append(const char * _Ptr) Line 840 + 0x9 bytes C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!std::basic_string<char,std::char_traits<char>,SCP_vm_allocator<char> >::operator+=(const char * _Ptr) Line 784 C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!vsprintf(std::basic_string<char,std::char_traits<char>,SCP_vm_allocator<char> > & dest, const char * format, char * ap) Line 3701 C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CFred_mission_save::fout(char * format, ...) Line 3040 + 0x11 bytes C++
> fred2_open_3_6_19_SSE2-DEBUG.exe!CFred_mission_save::save_turret_info(ship_subsys * ptr, int ship) Line 3853 + 0x21 bytes C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CFred_mission_save::save_common_object_data(object * objp, ship * shipp) Line 2221 C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CFred_mission_save::save_objects() Line 1467 C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CFred_mission_save::autosave_mission_file(char * pathname) Line 247 + 0x8 bytes C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CFREDDoc::autosave(char * desc) Line 278 + 0xd bytes C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CFREDDoc::OnOpenDocument(const char * pathname) Line 180 C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CSingleDocTemplate::OpenDocumentFile(const char * lpszPathName, int bAddToMRU, int bMakeVisible) Line 169 + 0x14 bytes C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CDocManager::OpenDocumentFile(const char * lpszFileName, int bAddToMRU) Line 1068 C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CDocManager::OpenDocumentFile(const char * lpszFileName) Line 977 C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CWinApp::OpenDocumentFile(const char * lpszFileName) Line 90 C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CWinApp::OnOpenRecentFile(unsigned int nID) Line 147 + 0x2a bytes C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!_AfxDispatchCmdMsg(CCmdTarget * pTarget, unsigned int nID, int nCode, void (void)* pfn, void * pExtra, unsigned int nSig, AFX_CMDHANDLERINFO * pHandlerInfo) Line 101 + 0xa bytes C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CCmdTarget::OnCmdMsg(unsigned int nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo) Line 381 + 0x27 bytes C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CFrameWnd::OnCmdMsg(unsigned int nID, int nCode, void * pExtra, AFX_CMDHANDLERINFO * pHandlerInfo) Line 978 + 0x23 bytes C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CWnd::OnCommand(unsigned int wParam, long lParam) Line 2729 C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CFrameWnd::OnCommand(unsigned int wParam, long lParam) Line 371 C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CWnd::OnWndMsg(unsigned int message, unsigned int wParam, long lParam, long * pResult) Line 2101 + 0x1e bytes C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CWnd::WindowProc(unsigned int message, unsigned int wParam, long lParam) Line 2087 + 0x20 bytes C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!AfxCallWndProc(CWnd * pWnd, HWND__ * hWnd, unsigned int nMsg, unsigned int wParam, long lParam) Line 257 + 0x1c bytes C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!AfxWndProc(HWND__ * hWnd, unsigned int nMsg, unsigned int wParam, long lParam) Line 420 C++
     user32.dll!758862fa()
     [Frames below may be incorrect and/or missing, no symbols loaded for user32.dll]
     user32.dll!75886d3a()
     user32.dll!75886ce9()
     user32.dll!758877c4()
     user32.dll!75887bca()
     fred2_open_3_6_19_SSE2-DEBUG.exe!AfxInternalPumpMessage() Line 183 C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CWinThread::PumpMessage() Line 900 C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CWinThread::Run() Line 629 + 0xd bytes C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!CWinApp::Run() Line 832 C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!AfxWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, char * lpCmdLine, int nCmdShow) Line 47 + 0xd bytes C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!WinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, char * lpCmdLine, int nCmdShow) Line 26 C++
     fred2_open_3_6_19_SSE2-DEBUG.exe!__tmainCRTStartup() Line 275 + 0x2c bytes C
     fred2_open_3_6_19_SSE2-DEBUG.exe!WinMainCRTStartup() Line 189 C
     kernel32.dll!750b33aa()
     ntdll.dll!77539ef2()
     ntdll.dll!77539ec5()
     fred2_open_3_6_19_SSE2-DEBUG.exe!ai_waypoints() Line 4426 + 0x9 bytes C++
     f301c0b2()
TagsNo tags attached.

Activities

FUBAR-BDHR

2013-05-12 02:50

developer  

2871.fs2 (4,127 bytes)

Goober5000

2020-07-07 03:27

administrator   ~0017001

PR posted:
https://github.com/scp-fs2open/fs2open.github.com/pull/2551

Goober5000

2020-07-07 15:48

administrator   ~0017003

Fixed.

Issue History

Date Modified Username Field Change
2013-05-12 02:50 FUBAR-BDHR New Issue
2013-05-12 02:50 FUBAR-BDHR File Added: 2871.fs2
2020-07-07 03:14 Goober5000 Assigned To => Goober5000
2020-07-07 03:14 Goober5000 Status new => confirmed
2020-07-07 03:27 Goober5000 Note Added: 0017001
2020-07-07 15:48 Goober5000 Status confirmed => resolved
2020-07-07 15:48 Goober5000 Resolution open => fixed
2020-07-07 15:48 Goober5000 Note Added: 0017003