mirror of
https://github.com/veracrypt/VeraCrypt.git
synced 2024-09-09 11:01:31 +02:00
Linux: solve rare issue where VeraCrypt wrongly reports that another instance is already running. That happens when VeraCrypt doesn't close cleanly upon shutdown/reboot and on the next startup another process is running with the same PID as VeraCrypt before shutdow/reboot.
This commit is contained in:
parent
2c96d17748
commit
d1a3316e44
1 changed files with 21 additions and 3 deletions
|
@ -842,8 +842,9 @@ namespace VeraCrypt
|
|||
|
||||
wxLogLevel logLevel = wxLog::GetLogLevel();
|
||||
wxLog::SetLogLevel (wxLOG_Error);
|
||||
|
||||
SingleInstanceChecker.reset (new wxSingleInstanceChecker (wxString (L".") + Application::GetName() + L"-lock-" + wxGetUserId()));
|
||||
|
||||
const wxString instanceCheckerName = wxString (L".") + Application::GetName() + L"-lock-" + wxGetUserId();
|
||||
SingleInstanceChecker.reset (new wxSingleInstanceChecker (instanceCheckerName));
|
||||
|
||||
wxLog::SetLogLevel (logLevel);
|
||||
|
||||
|
@ -878,6 +879,7 @@ namespace VeraCrypt
|
|||
if (write (showFifo, buf, 1) == 1)
|
||||
{
|
||||
close (showFifo);
|
||||
Gui->ShowInfo (_("VeraCrypt is already running."));
|
||||
Application::SetExitCode (0);
|
||||
return false;
|
||||
}
|
||||
|
@ -890,12 +892,28 @@ namespace VeraCrypt
|
|||
throw;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
// This is a false positive as VeraCrypt is not running (pipe not available)
|
||||
// we continue running after cleaning the lock file
|
||||
// and creating a new instance of the checker
|
||||
wxString lockFileName = wxGetHomeDir();
|
||||
if ( lockFileName.Last() != wxT('/') )
|
||||
{
|
||||
lockFileName += wxT('/');
|
||||
}
|
||||
lockFileName << instanceCheckerName;
|
||||
|
||||
if (wxRemoveFile (lockFileName))
|
||||
{
|
||||
SingleInstanceChecker.reset (new wxSingleInstanceChecker (instanceCheckerName));
|
||||
}
|
||||
#else
|
||||
|
||||
wxLog::FlushActive();
|
||||
Application::SetExitCode (1);
|
||||
Gui->ShowInfo (_("VeraCrypt is already running."));
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef TC_WINDOWS
|
||||
|
|
Loading…
Reference in a new issue