8fc7062605
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. |
||
---|---|---|
.github | ||
channels | ||
ci/cmake-preloads | ||
client | ||
cmake | ||
compat/stdbool | ||
docs | ||
external | ||
include | ||
libfreerdp | ||
packaging | ||
rdtk | ||
resources | ||
scripts | ||
server | ||
third-party | ||
tools | ||
uwac | ||
winpr | ||
.clang-format | ||
.gitignore | ||
.travis.yml | ||
ChangeLog | ||
CMakeCPack.cmake | ||
CMakeCPackOptions.cmake.in | ||
CMakeLists.txt | ||
LICENSE | ||
README.md | ||
SECURITY.md |
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