Go to file
Pascal Nowack 8fc7062605 client/cliprdr_file: Do not deadlock with FUSE2 when stopping fuse loop
FUSE2 has compared to FUSE3 a rather complicated structure with respect
to the FUSE loop, as it uses two handles for the loop and the mount.
Due to needing the possibility to invalidate inodes during the session
and to exit the FUSE session, the session and channel handles need to be
kept alive.
When the session stops, and with that the FUSE session too, the FUSE
thread must still be able to unmount the FUSE mount.
But due to FUSE2's annoying structure, the FUSE session must be
destroyed before doing this.
In this time period, where the FUSE2 loop stops running and between
stopping the FUSE2 session, it cannot answer any requests.
As a result, the "path test", where the mount path is poked cannot be
performed.
This "path test" is however necessary to ensure, that the FUSE loop
exits.
So, the main thread pokes at the FUSE mount to ensure the loop
definitely exits to then signal the FUSE thread, that it can destroy the
session and channel object.
But at the same time, the FUSE loop may already exited and wait for the
main thread to be signalled, that it can destroy the session and channel
object.
The waiting conditions here cannot be satisfied, leading to a deadlock.

Fix this situation, by already signalling the FUSE thread, that it can
destroy the FUSE objects, after calling fuse_session_exit.
2023-08-04 11:08:01 +02:00
.github [ci] add libsdl2-ttf dependency 2023-07-21 09:50:02 +02:00
channels Add return statement when not enough data 2023-08-03 10:16:05 +02:00
ci/cmake-preloads [ci] disable Wcast-align and Wexit-time-destructors 2023-08-01 08:37:58 +02:00
client client/cliprdr_file: Do not deadlock with FUSE2 when stopping fuse loop 2023-08-04 11:08:01 +02:00
cmake [mingw] fix build issues on debian 12 2023-08-01 13:32:35 +02:00
compat/stdbool Added stdbool.h compat header 2021-06-18 11:32:16 +02:00
docs Fix readme for mingw 2023-05-04 12:56:16 +02:00
external cmake: added external directory 2012-11-01 13:50:49 -04:00
include [api] remove obsolete define 2023-08-01 08:58:06 +02:00
libfreerdp [core,orders] fix undefined variable, unify log strings 2023-08-03 13:54:03 +02:00
packaging [ci,nightly] use internal MD4, MD5 and RC4 on windows 2023-07-28 13:42:12 +02:00
rdtk Export interface include directories 2023-08-01 11:12:46 +02:00
resources Added smartcard emulation layer 2022-01-11 12:34:43 +01:00
scripts Restructure Azure AD related stuff 2023-07-20 14:20:28 +02:00
server Export interface include directories 2023-08-01 11:12:46 +02:00
third-party cleanup cmake exports and pkg-config files 2016-01-12 17:32:33 +01:00
tools [build] update clang build script 2023-06-08 08:13:16 +02:00
uwac Export interface include directories 2023-08-01 11:12:46 +02:00
winpr libwinpr/crt/unicode: unicode conversion functions with allocation 2023-08-03 17:23:52 +02:00
.clang-format [clang-format] remove duplicate option 2023-06-05 11:28:48 +02:00
.gitignore Channel loading (#8204) 2022-09-14 13:53:27 +02:00
.travis.yml Remove unused codec x264 2021-09-14 12:38:14 +02:00
ChangeLog start new development cycle after 3.0.0-beta1 release 2023-07-21 16:04:49 +02:00
CMakeCPack.cmake Replaced CMAKE_[SOURCE|BINARY]_DIR with PROJECT_[SOURCE|BINARY]_DIR 2021-06-22 08:54:18 +02:00
CMakeCPackOptions.cmake.in cmake: fix package generation on Mac OS X 2013-09-09 21:42:25 -04:00
CMakeLists.txt [build] define _CRT_NONSTDC_NO_DEPRECATE with MSVC 2023-07-28 13:42:12 +02:00
LICENSE FreeRDP 1.0: initial commit 2011-06-30 15:12:51 -04:00
README.md Add security policy to readme 2022-04-26 07:45:33 +02:00
SECURITY.md Update the security policy (#8408) 2022-11-16 18:06:37 +01:00

FreeRDP: A Remote Desktop Protocol Implementation

FreeRDP is a free implementation of the Remote Desktop Protocol (RDP), released under the Apache license. Enjoy the freedom of using your software wherever you want, the way you want it, in a world where interoperability can finally liberate your computing experience.

Resources

Project website: https://www.freerdp.com/
Issue tracker: https://github.com/FreeRDP/FreeRDP/issues
Sources: https://github.com/FreeRDP/FreeRDP/
Downloads: https://pub.freerdp.com/releases/
Wiki: https://github.com/FreeRDP/FreeRDP/wiki
API documentation: https://pub.freerdp.com/api/

Security policy: https://github.com/FreeRDP/FreeRDP/security/policy

Matrix room : #FreeRDP:matrix.org (main) XMPP channel: #FreeRDP#matrix.org@matrix.org (bridged) IRC channel : #freerdp @ irc.oftc.net (bridged) Mailing list: https://lists.sourceforge.net/lists/listinfo/freerdp-devel

Microsoft Open Specifications

Information regarding the Microsoft Open Specifications can be found at: https://www.microsoft.com/openspecifications/

A list of reference documentation is maintained here: https://github.com/FreeRDP/FreeRDP/wiki/Reference-Documentation

Compilation

Instructions on how to get started compiling FreeRDP can be found on the wiki: https://github.com/FreeRDP/FreeRDP/wiki/Compilation