In G4RunManager.hh, the function inline void SetRandomNumberStoreDir(const G4String& dir) { G4String dirStr = dir; if( dirStr(dirStr.length()-1) != '/' ) dirStr += "/"; #ifndef WIN32 G4String shellCmd = "mkdir -p "; #else std::replace(dirStr.begin(), dirStr.end(),'/','\\'); G4String shellCmd = "mkdir "; #endif shellCmd += dirStr; randomNumberStatusDir = dirStr; system(shellCmd); } Should have the last line written "system(shellCmd.c_str());" to conform to the calling convention system(const char*). The current code produces a warning on some Linux flavors (technically, some GCC versions).
In fact, this isn't a bug. G4String inherits from std::string, but adds numerous additional interfaces, including an automatic conversion to const char*. This conversion satisfies the signature of system().