Community
Participate
Working Groups
Today, there is lack of control over the network resources involved in the communication (sockets). It is possible for any thread to access a socket for sending data, starting, stopping and reconnecting. Moreover, there are some known inappropriate exception handling blocks (stack trace printing) and it is possible to reach infinite loops during input stream reading at the VNC viewer.
Created attachment 124412 [details] A patch that implements minor bug fixes and an Event Handler for handling socket related requests
Created attachment 124413 [details] Sequence diagrams that compare old implementation with the proposed solution
Hi guys, I am posting a proposal for enhancement on the points described in the bug. In the attached patch(260559_patch.txt), you'll find several minor changes and one major change to enhance concurrency control on the socket. For the major change I have adopted a solution based on a single thread access to the socket object. This thread is called the "Event Handler". Other threads requests to the Event Handler to perform actions on the socket, and it is the Event Handler job to schedule the requests and execute them without concurrency. The attached sequence diagram illustrates how the mechanism works compared to the old implementation. The scheduling is not expected to decrease performance, because it is based on simple boolean tests. In the lack of start/stop/reconnect requests, this thread will work basically as a message sender thread. I will appreciate if you dedicate some of your time analysing this, and if you have any comments please post them as well. Thanks and best regards
I wrote the code of all new classes that are contained in the archive. I have the right to contribute the code to Eclipse, and authorize to license it through EPL.
Hi, The patch has been tested with different vnc servers. The Event handler resolved the majority of the crash problems and deadlock situations. Integration branch: branch_dsdp_tml_bug_260559 Merged to: HEAD many thanks, Daniel.
released_0.3M6