The code in my plugin simply does this in AGameModeBase::StartPlay.
{
std::ifstream f;
std::cout << f.is_open();
}
This works in Windows but on Linux this results in crash (we are using Clang 3.9 on Ubuntu 16.04. It appears that when ifstream destructor runs, it calls FMallocBinned which crahses because it tries to access invalid address. Below is crash report:
[2017.07.13-03.31.17:045][574]LogLinux: === Critical error: ===
Unhandled Exception: SIGSEGV: invalid attempt to memory at address 0x0000000000000002
[2017.07.13-03.31.17:045][574]LogLinux: Fatal error!
[Callstack] 00 0x00007f230fb6af7f FLinuxPlatformStackWalk::CaptureStackBackTrace(unsigned long long*, unsigned int, void*)
[Callstack] 01 0x00007f230fa53f65 FGenericPlatformStackWalk::StackWalkAndDump(char*, unsigned long, int, void*)
[Callstack] 02 0x00007f230fb2c361 FLinuxCrashContext::CaptureStackTrace()
[Callstack] 03 0x00007f2305d691c0 CommonLinuxCrashHandler(FGenericCrashContext const&)
[Callstack] 04 0x00007f230fb304da PlatformCrashHandler(int, siginfo_t*, void*)
[Callstack] 05 0x00007f2315829390 /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390) [0x7f2315829390]
[Callstack] 06 0x00007f230fad0d48 FMallocBinned::Private::FreeInternal(FMallocBinned&, void*)
[Callstack] 07 0x00007f229ac02c6a std::__1::basic_filebuf<char, std::__1::char_traits<char> >::~basic_filebuf()
[Callstack] 08 0x00007f229abfa911 msr::airlib::Settings::saveJSonFile(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)