mirror of
https://github.com/veracrypt/VeraCrypt
synced 2024-09-20 21:06:22 +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
@ -843,7 +843,8 @@ namespace VeraCrypt
|
|||||||
wxLogLevel logLevel = wxLog::GetLogLevel();
|
wxLogLevel logLevel = wxLog::GetLogLevel();
|
||||||
wxLog::SetLogLevel (wxLOG_Error);
|
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);
|
wxLog::SetLogLevel (logLevel);
|
||||||
|
|
||||||
@ -878,6 +879,7 @@ namespace VeraCrypt
|
|||||||
if (write (showFifo, buf, 1) == 1)
|
if (write (showFifo, buf, 1) == 1)
|
||||||
{
|
{
|
||||||
close (showFifo);
|
close (showFifo);
|
||||||
|
Gui->ShowInfo (_("VeraCrypt is already running."));
|
||||||
Application::SetExitCode (0);
|
Application::SetExitCode (0);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -890,12 +892,28 @@ namespace VeraCrypt
|
|||||||
throw;
|
throw;
|
||||||
#endif
|
#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();
|
wxLog::FlushActive();
|
||||||
Application::SetExitCode (1);
|
Application::SetExitCode (1);
|
||||||
Gui->ShowInfo (_("VeraCrypt is already running."));
|
Gui->ShowInfo (_("VeraCrypt is already running."));
|
||||||
return false;
|
return false;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef TC_WINDOWS
|
#ifdef TC_WINDOWS
|
||||||
|
Loading…
Reference in New Issue
Block a user