diff --git a/Source/Process/AuProcessEnvironment.Unix.cpp b/Source/Process/AuProcessEnvironment.Unix.cpp index cee24b68..2e8b09df 100644 --- a/Source/Process/AuProcessEnvironment.Unix.cpp +++ b/Source/Process/AuProcessEnvironment.Unix.cpp @@ -14,6 +14,11 @@ namespace Aurora::Process { static AuThreadPrimitives::Mutex gEnvMutex; + void PosixForkResetLocks() + { + AuResetMember(gEnvMutex); + } + AUKN_SYM AuList> EnvironmentGetAll() { AU_LOCK_GUARD(gEnvMutex); diff --git a/Source/Processes/AuOpen.Unix.cpp b/Source/Processes/AuOpen.Unix.cpp index 1925b24f..11f34574 100644 --- a/Source/Processes/AuOpen.Unix.cpp +++ b/Source/Processes/AuOpen.Unix.cpp @@ -12,6 +12,11 @@ #include #include +namespace Aurora::Process +{ + void PosixForkResetLocks(); +} + namespace Aurora::Processes { static void UnixOpenAsyncThread(AuString uri, bool bType) @@ -60,6 +65,7 @@ namespace Aurora::Processes { setsid(); + AuProcess::PosixForkResetLocks(); auto optStringA = AuProcess::EnvironmentGetOne("container"); auto optStringB = AuProcess::EnvironmentGetOne("AURORA_RUNTIME_USE_GDBUS_BIN_TO_PORTAL"); bool bIsFireJail = optStringA && optStringA.Value() == "firejail"; diff --git a/Source/Processes/AuProcess.Unix.cpp b/Source/Processes/AuProcess.Unix.cpp index 436c467f..53269d7f 100644 --- a/Source/Processes/AuProcess.Unix.cpp +++ b/Source/Processes/AuProcess.Unix.cpp @@ -47,6 +47,10 @@ #include #endif +namespace Aurora::Process +{ + void PosixForkResetLocks(); +} namespace Aurora::Processes { @@ -563,6 +567,8 @@ namespace Aurora::Processes void ProcessImpl::ForkMain() { + AuProcess::PosixForkResetLocks(); + { ::dup2(this->pipeStdIn_[0], STDIN_FILENO); ::close(this->pipeStdIn_[0]);