Has this patch been merged yet? If not, what input is needed to get it accepted?

Tom


On 2020-08-10 21:30, Alexandr Miloslavskiy wrote:
Please find test snippet and patch attached.

[[[
Fix JavaHL crash in RequestChannel.nativeRead

The problem here is that when 'RemoteSession' is destroyed, it also
does 'apr_pool_destroy()' which frees memory behind 'apr_file_t', which
is represented by 'TunnelChannel.nativeChannel' in Java.
'TunnelChannel' runs on a different thread and is unaware that
'apr_file_t' pointer is now invalid.

Fix this by informing 'TunnelChannel' before 'apr_file_t' is freed.

One other problem is that when 'TunnelAgent.openTunnel()' throws an
exception, 'OperationContext::closeTunnel()' was not called at all.

[in subversion/bindings/javahl]
* native/OperationContext.cpp
   (close_TunnelChannel): New function to inform Java side.
   (openTunnel): Keep references to Java tunnel objects.
   (openTunnel): In case of exception, clean up properly.
   (closeTunnel): Inform Java side when tunnel is closed.
* src/org/apache/subversion/javahl/util/RequestChannel.java
   Add 'synchronized' to avoid error described in 'syncClose()'
* src/org/apache/subversion/javahl/util/ResponseChannel.java
   Add 'synchronized' to avoid error described in 'syncClose()'
* src/org/apache/subversion/javahl/util/Tunnel.java
   A new function to clean up. I decided not to change old '.close()'
   because the new function can lead to a deadlock if used incorrectly.
]]]

Reply via email to