在 tomcat 服务器上的 Web 应用程序中使用 SVNKit 时 JRE 崩溃

JRE getting crashed when using SVNKit inside a web app on tomcat server

我正在尝试使用 SVNKit 和 spring 通过门户网站处理 svn 操作。我能够执行单独的操作,如提交、清理、更新等。我的提交代码如下:

public Exception commit(String user, String password, String fileName,String comment) {

    Exception svnException = null;
    try {
        SVNUtil.cleanUpSVN();
        ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(user, password);
        ISVNOptions options = SVNWCUtil.createDefaultOptions(true);
        SVNClientManager svnClientManager = SVNClientManager.newInstance(options, authManager);
        SVNCommitClient svnCommitClient = svnClientManager.getCommitClient();
        File commitFile = new File(fileName);
        svnCommitClient.doCommit(new File[]{commitFile}, false, comment, null, null, false, false, SVNDepth.INFINITY);
    } catch (SVNException svnEx) {
        svnException = svnEx;
        svnException.printStackTrace();
    }finally{
        System.out.print("Completed Execution of Commit method");
    }
    return svnException;

}

上面的代码在单独触发时就像一个魅力,但是当我把它放在我的 webapp 实现中时,一切都会崩溃 class.The 我在 catalina.out 中遇到的错误如下:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x0000003c3633362f, pid=13153, tid=0x00007f8791469700
#
# JRE version: Java(TM) SE Runtime Environment (8.0_92-b14) (build 1.8.0_92-b14)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.92-b14 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [libc.so.6+0x13362f]
#
# Core dump written. Default location: /home/shavivek/Downloads/apache-tomcat-7.0.70/logs/core or core.13153
#
# An error report file with more information is saved as:
# /home/shavivek/Downloads/apache-tomcat-7.0.70/logs/hs_err_pid13153.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

/home/shavivek/Downloads/apache-tomcat-7.0.70/logs/hs_err_pid13153.log 中:

Register to memory mapping:

RAX=0x0000000000000001 is an unknown value
RBX=0x6b65766976616873 is an unknown value
RCX=0x0000000000000003 is an unknown value
RDX=0x0000003c4ae0f520: <offset 0xf520> in /usr/lib64/libgnome-keyring.so.0.1.1 at 0x0000003c4ae00000
RSP=0x00007f87914640b8 is pointing into the stack for thread: 0x00007f8764002000                     
RBP=0x00007f8791464180 is pointing into the stack for thread: 0x00007f8764002000                     
RSI=0x6b65766976616873 is an unknown value                                                           
RDI=0x6b65766976616870 is an unknown value                                                           
R8 =0x6b65766976616873 is an unknown value                                                           
R9 =0x00007f876005f070 is an unknown value                                                           
R10=0x00007f8791463e20 is pointing into the stack for thread: 0x00007f8764002000                     
R11=0x0000003c36283a8e: <offset 0x83a8e> in /lib64/libc.so.6 at 0x0000003c36200000                   
R12=0x00007f8754187a80 is an unknown value                                                           
R13=0x00007f876005f060 is an unknown value                                                           
R14=0x6b65766976616873 is an unknown value                                                           
R15=0x0000000000000001 is an unknown value                                                           


Stack: [0x00007f8791369000,0x00007f879146a000],  sp=0x00007f87914640b8,  free space=1004k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)          
C  [libc.so.6+0x13362f]                                                                  
C  0x0000000000000032                                                                    

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
J 6308  com.sun.jna.Native.invokeInt(JI[Ljava/lang/Object;)I (0 bytes) @ 0x00007f87b6080cd8 [0x00007f87b6080c80+0x58]
j  com.sun.jna.Function.invoke([Ljava/lang/Object;Ljava/lang/Class;Z)Ljava/lang/Object;+225                          
J 7060 C1 com.sun.jna.Function.invoke(Ljava/lang/Class;[Ljava/lang/Object;Ljava/util/Map;)Ljava/lang/Object; (538 bytes) @ 0x00007f87b6228d3c [0x00007f87b62277a0+0x159c]
J 6605 C2 com.sun.jna.Library$Handler.invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; (320 bytes) @ 0x00007f87b61f8ffc [0x00007f87b61f89e0+0x61c]
j  com.sun.proxy.$Proxy28.gnome_keyring_set_network_password_sync(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILcom/sun/jna/Pointer;Lcom/sun/jna/ptr/IntByR
eference;)I+67                                                                                                                                                                                                                               
v  ~StubRoutines::call_stub                                                                                                                                                                                                                  
J 1155  sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (0 bytes) @ 0x00007f87b5461cb7 [0x00007f87b5461c40+0x77]                                             
J 388 C1 sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (104 bytes) @ 0x00007f87b521fa0c [0x00007f87b521e880+0x118c]                                                                   
J 1931 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x00007f87b5744dcc [0x00007f87b5744d20+0xac]                                                                                 
j  org.tmatesoft.svn.core.internal.wc.SVNMethodCallLogger.invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;+101                                                                                      
j  com.sun.proxy.$Proxy28.gnome_keyring_set_network_password_sync(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILcom/sun/jna/Pointer;Lcom/sun/jna/ptr/IntByR
eference;)I+67                                                                                                                                                                                                                               
j  org.tmatesoft.svn.core.internal.util.jna.SVNGnomeKeyring.setPassword(Ljava/lang/String;Ljava/lang/String;[C)Z+103                                                                                                                         
j  org.tmatesoft.svn.core.internal.util.jna.SVNGnomeKeyring.setPassword(Ljava/lang/String;Ljava/lang/String;[CZLorg/tmatesoft/svn/core/internal/wc/ISVNGnomeKeyringPasswordProvider;)Z+71                                                    
j  org.tmatesoft.svn.core.internal.util.jna.SVNJNAUtil.addPasswordToGnomeKeyring(Ljava/lang/String;Ljava/lang/String;[CZLorg/tmatesoft/svn/core/internal/wc/ISVNGnomeKeyringPasswordProvider;)Z+12                                           
j  org.tmatesoft.svn.core.internal.wc.DefaultSVNPersistentAuthenticationProvider$GnomeKeyringPasswordStorage.savePassword(Ljava/lang/String;[CLorg/tmatesoft/svn/core/auth/SVNAuthentication;Lorg/tmatesoft/svn/core/SVNProperties;)Z+44     
j  org.tmatesoft.svn.core.internal.wc.DefaultSVNPersistentAuthenticationProvider.savePasswordCredential(Lorg/tmatesoft/svn/core/SVNProperties;Lorg/tmatesoft/svn/core/auth/SVNAuthentication;Ljava/lang/String;)V+78                         
j  org.tmatesoft.svn.core.internal.wc.DefaultSVNPersistentAuthenticationProvider.saveAuthentication(Lorg/tmatesoft/svn/core/auth/SVNAuthentication;Ljava/lang/String;Ljava/lang/String;)V+119                                                
j  org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.acknowledgeAuthentication(ZLjava/lang/String;Ljava/lang/String;Lorg/tmatesoft/svn/core/SVNErrorMessage;Lorg/tmatesoft/svn/core/auth/SVNAuthentication;)V+90            
j  org.tmatesoft.svn.core.auth.BasicAuthenticationManager.acknowledgeAuthentication(ZLjava/lang/String;Ljava/lang/String;Lorg/tmatesoft/svn/core/SVNErrorMessage;Lorg/tmatesoft/svn/core/auth/SVNAuthentication;Lorg/tmatesoft/svn/core/SVNUR
L;Lorg/tmatesoft/svn/core/auth/ISVNAuthenticationManager;)V+37                                                                                                                                                                               
j  org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(Ljava/lang/String;Ljava/lang/String;Lorg/tmatesoft/svn/core/internal/io/dav/http/HTTPHeader;Ljava/io/InputStream;IILjava/io/OutputStream;Lorg/xml/sax/helpers/DefaultHa
ndler;Lorg/tmatesoft/svn/core/SVNErrorMessage;)Lorg/tmatesoft/svn/core/internal/io/dav/http/HTTPStatus;+2405                                                                                                                                 
j  org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(Ljava/lang/String;Ljava/lang/String;Lorg/tmatesoft/svn/core/internal/io/dav/http/HTTPHeader;Ljava/lang/StringBuffer;IILjava/io/OutputStream;Lorg/xml/sax/helpers/Defaul
tHandler;Lorg/tmatesoft/svn/core/SVNErrorMessage;)Lorg/tmatesoft/svn/core/internal/io/dav/http/HTTPStatus;+67                                                                                                                                
j  org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(Ljava/lang/String;Ljava/lang/String;Lorg/tmatesoft/svn/core/internal/io/dav/http/HTTPHeader;Ljava/lang/StringBuffer;IILjava/io/OutputStream;Lorg/xml/sax/helpers/Defaul
tHandler;)Lorg/tmatesoft/svn/core/internal/io/dav/http/HTTPStatus;+15                                                                                                                                                                        
j  org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(Lorg/tmatesoft/svn/core/internal/io/dav/http/IHTTPConnection;Ljava/lang/String;Ljava/lang/String;Lorg/tmatesoft/svn/core/internal/io/dav/http/HTTPHeader;Ljava/lan
g/StringBuffer;IILjava/io/OutputStream;Lorg/xml/sax/helpers/DefaultHandler;)Lorg/tmatesoft/svn/core/internal/io/dav/http/HTTPStatus;+21                                                                                                      
j  org.tmatesoft.svn.core.internal.io.dav.DAVConnection.doMakeActivity(Lorg/tmatesoft/svn/core/io/ISVNWorkspaceMediator;)Ljava/lang/String;+94                                                                                               
j  org.tmatesoft.svn.core.internal.io.dav.DAVCommitEditor.createActivity()[Ljava/lang/String;+8                                                                                                                                              
j  org.tmatesoft.svn.core.internal.io.dav.DAVCommitEditor.openRoot(J)V+335                                                                                                                                                                   
j  org.tmatesoft.svn.core.internal.wc.SVNCommitUtil.driveCommitEditor(Lorg/tmatesoft/svn/core/internal/wc/ISVNCommitPathHandler;Ljava/util/Collection;Lorg/tmatesoft/svn/core/io/ISVNEditor;J)V+100                                          
j  org.tmatesoft.svn.core.internal.wc.SVNCommitter.commit(Ljava/util/Collection;Ljava/util/Map;Lorg/tmatesoft/svn/core/SVNURL;Lorg/tmatesoft/svn/core/io/ISVNEditor;Lorg/tmatesoft/svn/core/wc/ISVNEventHandler;)Lorg/tmatesoft/svn/core/SVNC
ommitInfo;+31                                                                                                                                                                                                                                
j  org.tmatesoft.svn.core.internal.wc16.SVNCommitClient16.doCommit([Lorg/tmatesoft/svn/core/wc/SVNCommitPacket;ZZLjava/lang/String;Lorg/tmatesoft/svn/core/SVNProperties;)[Lorg/tmatesoft/svn/core/SVNCommitInfo;+358                        
j  org.tmatesoft.svn.core.internal.wc16.SVNCommitClient16.doCommit(Lorg/tmatesoft/svn/core/wc/SVNCommitPacket;ZZLjava/lang/String;Lorg/tmatesoft/svn/core/SVNProperties;)Lorg/tmatesoft/svn/core/SVNCommitInfo;+15                           
j  org.tmatesoft.svn.core.internal.wc2.old.SvnOldCommit.run()Lorg/tmatesoft/svn/core/SVNCommitInfo;+150                                                                                                                                      
j  org.tmatesoft.svn.core.internal.wc2.old.SvnOldCommit.run()Ljava/lang/Object;+1                                                                                                                                                            
j  org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(Lorg/tmatesoft/svn/core/wc2/SvnOperation;)Ljava/lang/Object;+6                                                                                                                 
j  org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(Lorg/tmatesoft/svn/core/wc2/SvnOperation;)Ljava/lang/Object;+67                                                                                                                        
j  org.tmatesoft.svn.core.wc2.SvnOperation.run()Ljava/lang/Object;+9                                                                                                                                                                         
j  org.tmatesoft.svn.core.wc2.SvnCommit.run()Lorg/tmatesoft/svn/core/SVNCommitInfo;+16                                                                                                                                                       
j  org.tmatesoft.svn.core.wc.SVNCommitClient.doCommit([Lorg/tmatesoft/svn/core/wc/SVNCommitPacket;ZZLjava/lang/String;Lorg/tmatesoft/svn/core/SVNProperties;)[Lorg/tmatesoft/svn/core/SVNCommitInfo;+342                                     
j  org.tmatesoft.svn.core.wc.SVNCommitClient.doCommit([Ljava/io/File;ZLjava/lang/String;Lorg/tmatesoft/svn/core/SVNProperties;[Ljava/lang/String;ZZLorg/tmatesoft/svn/core/SVNDepth;)Lorg/tmatesoft/svn/core/SVNCommitInfo;+29               
j  com.diglert.implementation.MonsvnSVNHandler.commit(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Exception;+98                                                                                      
j  com.diglert.implementation.FormRequestHandler.processUserInputs(Ljava/util/Map;)Ljava/lang/Exception;+204                                                                                                                                 
j  com.diglert.controller.DiglertController.processFormData(Ljava/util/Map;Lorg/springframework/ui/ModelMap;Ljava/util/Map;)Ljava/lang/String;+12                                                                                            
v  ~StubRoutines::call_stub                                                                                                                                                                                                                  
J 1155  sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (0 bytes) @ 0x00007f87b5461cb7 [0x00007f87b5461c40+0x77]                                             
J 388 C1 sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (104 bytes) @ 0x00007f87b521fa0c [0x00007f87b521e880+0x118c]                                                                   
J 1931 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x00007f87b5744dcc [0x00007f87b5744d20+0xac]                                                                                 
j  org.springframework.web.method.support.InvocableHandlerMethod.invoke([Ljava/lang/Object;)Ljava/lang/Object;+16                                                                                                                            
j  org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(Lorg/springframework/web/context/request/NativeWebRequest;Lorg/springframework/web/method/support/ModelAndViewContainer;[Ljava/lang/Object;)Ljava/lang/Obje
ct;+78                                                                                                                                                                                                                                       
j  org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(Lorg/springframework/web/context/request/ServletWebRequest;Lorg/springframework/web/method/support/ModelAndViewContainer;[Ljava/lang/O
bject;)V+4                                                                                                                                                                                                                                   
j  org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Lorg/springframework/web/method/HandlerMethod;)Lorg/s
pringframework/web/servlet/ModelAndView;+230                                                                                                                                                                                                 
j  org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Lorg/springframework/web/method/HandlerMethod;)Lorg/sprin
gframework/web/servlet/ModelAndView;+89                                                                                                                                                                                                      
j  org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Ljava/lang/Object;)Lorg/springframework/web/servlet/ModelAndView;+7         
j  org.springframework.web.servlet.DispatcherServlet.doDispatch(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+305                                                                                        
j  org.springframework.web.servlet.DispatcherServlet.doService(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+319                                                                                         
j  org.springframework.web.servlet.FrameworkServlet.processRequest(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+72                                                                                      
j  org.springframework.web.servlet.FrameworkServlet.doPost(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+3                                                                                               
j  javax.servlet.http.HttpServlet.service(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+149                                                                                                              
j  org.springframework.web.servlet.FrameworkServlet.service(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+32                                                                                             
j  javax.servlet.http.HttpServlet.service(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+30                                                                                                                                 
j  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+446                                                                                                      
j  org.apache.catalina.core.ApplicationFilterChain.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+101                                                                                                              
j  org.apache.tomcat.websocket.server.WsFilter.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/FilterChain;)V+21                                                                                        
j  org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+151                                                                                                      
j  org.apache.catalina.core.ApplicationFilterChain.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+101                                                                                                              
j  org.apache.catalina.core.StandardWrapperValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+780                                                                                                
j  org.apache.catalina.core.StandardContextValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+166                                                                                                
j  org.apache.catalina.authenticator.AuthenticatorBase.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+449                                                                                          
j  org.apache.catalina.core.StandardHostValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+158                                                                                                   
j  org.apache.catalina.valves.ErrorReportValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+6                                                                                                    
j  org.apache.catalina.valves.AccessLogValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+6                                                                                                      
j  org.apache.catalina.core.StandardEngineValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+71                                                                                                  
j  org.apache.catalina.connector.CoyoteAdapter.service(Lorg/apache/coyote/Request;Lorg/apache/coyote/Response;)V+199                                                                                                                         
j  org.apache.coyote.http11.AbstractHttp11Processor.process(Lorg/apache/tomcat/util/net/SocketWrapper;)Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler$SocketState;+634                                                                 
j  org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(Lorg/apache/tomcat/util/net/SocketWrapper;Lorg/apache/tomcat/util/net/SocketStatus;)Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler$SocketState;+270            
j  org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run()V+106                                                                                                                                                                         
j  java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V+95                                                                                                                                   
j  java.util.concurrent.ThreadPoolExecutor$Worker.run()V+5                                                                                                                                                                                   
j  org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run()V+4                                                                                                                                                                       
j  java.lang.Thread.run()V+11                                                                                                                                                                                                                
v  ~StubRoutines::call_stub                                                                                     

请帮助我了解这里出了什么问题

嗯,花了很多时间后我发现

-Dsvnkit.useJNA=false

问题已解决。可能对某人有帮助。

我相信我已经解决了 SVNKit trunk r10638 的问题。该修复程序将包含在 >= 1.8.16.

的 SVNKit 版本中

简短的问题描述:SVNKit 通过 JNA 错误地调用了 Gnome Keyring 函数。这就是为什么转向 Gnome Keyring 或 JNA 调用有助于避免该问题。

我是 SVNKit 开发人员之一。