bytedeco / javacv

Java interface to OpenCV, FFmpeg, and more
Other
7.39k stars 1.56k forks source link

[SEGV on libc.so.6: Segmentation Fault on Linux System with FFmpeg Library in Java] #2208

Open everAndNever opened 3 months ago

everAndNever commented 3 months ago

We are encountering a segmentation fault (SIGSEGV) in our Java application when running on a Linux system. The error occurs at address 0xa32ba in libc.so.6. We suspect that this issue is related to the Java wrapper we are using for the FFmpeg library. ` --------------- T H R E A D ---------------

Current thread (0x00007f62617ff800): JavaThread "http-nio-11166-exec-3" daemon [_thread_in_native, id=3758308, stack(0x00007f60cbcfd000,0x00007f60cbdfe000)]

siginfo: si_signo: 11 (SIGSEGV), si_code: 128 (SI_KERNEL), si_addr: 0x0000000000000000

Registers: RAX=0x8000000000000000, RBX=0x0000000000000140, RCX=0x00007f60bc3a736c, RDX=0x0000000000000100 RSP=0x00007f60cbdf4848, RBP=0x00007f60bc2cc6a0, RSI=0x00007f60bc3a727c, RDI=0x8000000000000000 R8 =0x0000000000000000, R9 =0x8000000000000130, R10=0x0000000000000246, R11=0x8000000000000130 R12=0x00007f60bc2ca280, R13=0x00007f60bc2d2d60, R14=0x0000000000000000, R15=0x00007f60bc3a727c RIP=0x00007f6265bb92ba, EFLAGS=0x0000000000010206, CSGSFS=0x002b000000000033, ERR=0x0000000000000000 TRAPNO=0x000000000000000d

Top of Stack: (sp=0x00007f60cbdf4848) 0x00007f60cbdf4848: 00007f5fbc5f7022 0000000000000000 0x00007f60cbdf4858: 6b4f38d865c1bd76 0000000000000000 0x00007f60cbdf4868: 00007f60bc2cc6a0 00007f60bc2ca280 0x00007f60cbdf4878: 00007f60bc3a7270 00007f60bc2d1b60 0x00007f60cbdf4888: 000000000000014c 00007f60bc021eb0 0x00007f60cbdf4898: 00007f5fbc5f7ea1 0000000000000000 0x00007f60cbdf48a8: 0000000000000000 0000000000000000 0x00007f60cbdf48b8: 0000014c00000000 0000000000000000 0x00007f60cbdf48c8: 6b4f38d800000000 00007f60bc021eb0 0x00007f60cbdf48d8: 00007f60bc2cf8a0 0000000000000008 0x00007f60cbdf48e8: 0000000000000000 00007f60bc2cf8a0 0x00007f60cbdf48f8: 0000000000000002 00007f60bc021eb0 0x00007f60cbdf4908: 00007f5fbc60c2ea 0000000000000000 0x00007f60cbdf4918: 0000000000000000 00007f60bc021eb0 0x00007f60cbdf4928: 0000000000000000 0000000000000000 0x00007f60cbdf4938: 0000000000000000 0000000000000000 0x00007f60cbdf4948: 00007f60bc2ca280 0000000000000000 0x00007f60cbdf4958: 00007f60cbdf496c 0000000000000000 0x00007f60cbdf4968: 0000000000000000 00007f60bc2d1be0 0x00007f60cbdf4978: 0000000000000000 0000000000000000 0x00007f60cbdf4988: 00007f60bc2cf8a0 00007f60bc2ca280 0x00007f60cbdf4998: 00007f60bc021eb0 8000000000000000 0x00007f60cbdf49a8: 00007f60bc2ca280 00007f60bc021eb0 0x00007f60cbdf49b8: 00007f5fbc60edfb 0000000000000000 0x00007f60cbdf49c8: 0000000000000000 0000000000000000 0x00007f60cbdf49d8: 0000000000000000 0000000000000000 0x00007f60cbdf49e8: 0000000000000000 0000000000000000 0x00007f60cbdf49f8: 0000000000000000 0000000000000000 0x00007f60cbdf4a08: 0000000000000000 0000000000000000 0x00007f60cbdf4a18: 0000000000000000 0000000000000000 0x00007f60cbdf4a28: 0000000000000000 0000000000000000 0x00007f60cbdf4a38: 0000000000000000 0000000000000000

Instructions: (pc=0x00007f6265bb92ba) 0x00007f6265bb929a: 3d 11 00 0f 87 af 00 00 00 0f 10 01 0f 10 49 f0 0x00007f6265bb92aa: 0f 10 51 e0 0f 10 59 d0 48 83 e9 40 48 83 ea 40 0x00007f6265bb92ba: 41 0f 29 01 41 0f 29 49 f0 41 0f 29 51 e0 41 0f 0x00007f6265bb92ca: 29 59 d0 49 83 e9 40 48 83 fa 40 77 cc 0f 11 27

Register to memory mapping:

RAX=0x8000000000000000 is an unknown value RBX=0x0000000000000140 is an unknown value RCX=0x00007f60bc3a736c is an unknown value RDX=0x0000000000000100 is an unknown value RSP=0x00007f60cbdf4848 is pointing into the stack for thread: 0x00007f62617ff800 RBP=0x00007f60bc2cc6a0 is an unknown value RSI=0x00007f60bc3a727c is an unknown value RDI=0x8000000000000000 is an unknown value R8 =0x0000000000000000 is an unknown value R9 =0x8000000000000130 is an unknown value R10=0x0000000000000246 is an unknown value R11=0x8000000000000130 is an unknown value R12=0x00007f60bc2ca280 is an unknown value R13=0x00007f60bc2d2d60 is an unknown value R14=0x0000000000000000 is an unknown value R15=0x00007f60bc3a727c is an unknown value

Stack: [0x00007f60cbcfd000,0x00007f60cbdfe000], sp=0x00007f60cbdf4848, free space=990k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) C [libc.so.6+0xa32ba]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) j org.bytedeco.ffmpeg.global.avformat.avformat_find_stream_info(Lorg/bytedeco/ffmpeg/avformat/AVFormatContext;Lorg/bytedeco/javacpp/PointerPointer;)I+0 j org.bytedeco.javacv.FFmpegFrameGrabber.startUnsafe(Z)V+824 j org.bytedeco.javacv.FFmpegFrameGrabber.start(Z)V+7 j org.bytedeco.javacv.FFmpegFrameGrabber.start()V+2 j com.rtsp.common.utils.CameraUtil.savePictures(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+64 j com.rtsp.common.utils.CameraUtil.captureScreenshot(Ljava/util/List;Ljava/lang/String;)Lcom/lancoo/converterService/common/R;+105 j com.rtsp.common.service.impl.SubInnerSystemBusinessServiceImpl.run(Ljava/lang/Object;)Lcom/lancoo/converterService/common/R;+33 j com.lancoo.converterService.controller.InnerSystemController.innerSystemBusiness(Ljava/lang/String;Ljava/lang/Object;)Lcom/lancoo/converterService/common/R;+55 j com.lancoo.converterService.controller.InnerSystemController$$FastClassBySpringCGLIB$$4b5c26b1.invoke(ILjava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+45 j org.springframework.cglib.proxy.MethodProxy.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+19 j org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint()Ljava/lang/Object;+19 j org.springframework.aop.framework.ReflectiveMethodInvocation.proceed()Ljava/lang/Object;+19 j org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed()Ljava/lang/Object;+1 j org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed()Ljava/lang/Object;+9 j com.lancoo.converterService.aop.AccessValidityDetectionAop.aroundControllerLog(Lorg/aspectj/lang/ProceedingJoinPoint;)Ljava/lang/Object;+317 v ~StubRoutines::call_stub J 2496 sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (0 bytes) @ 0x00007f6251a6aab7 [0x00007f6251a6aa40+0x77] J 2495 C1 sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (104 bytes) @ 0x00007f6251a6d774 [0x00007f6251a6c600+0x1174] J 5863 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x00007f625186b564 [0x00007f625186b4c0+0xa4] j org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs([Ljava/lang/Object;)Ljava/lang/Object;+35 j org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(Lorg/aspectj/lang/JoinPoint;Lorg/aspectj/weaver/tools/JoinPointMatch;Ljava/lang/Object;Ljava/lang/Throwable;)Ljava/lang/Object;+10 j org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(Lorg/aopalliance/intercept/MethodInvocation;)Ljava/lang/Object;+58 j org.springframework.aop.framework.ReflectiveMethodInvocation.proceed()Ljava/lang/Object;+120 j org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed()Ljava/lang/Object;+1 j org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(Lorg/aopalliance/intercept/MethodInvocation;)Ljava/lang/Object;+18 j org.springframework.aop.framework.ReflectiveMethodInvocation.proceed()Ljava/lang/Object;+120 j org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed()Ljava/lang/Object;+1 j org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;Lorg/springframework/cglib/proxy/MethodProxy;)Ljava/lang/Object;+133 j com.lancoo.converterService.controller.InnerSystemController$$EnhancerBySpringCGLIB$$f7927a0c.innerSystemBusiness(Ljava/lang/String;Ljava/lang/Object;)Lcom/lancoo/converterService/common/R;+40 v ~StubRoutines::call_stub J 2496 sun.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (0 bytes) @ 0x00007f6251a6aab7 [0x00007f6251a6aa40+0x77] J 2495 C1 sun.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (104 bytes) @ 0x00007f6251a6d774 [0x00007f6251a6c600+0x1174] J 5863 C2 java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; (62 bytes) @ 0x00007f625186b564 [0x00007f625186b4c0+0xa4] j org.springframework.web.method.support.InvocableHandlerMethod.doInvoke([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/Object;+56 j org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(Lorg/springframework/web/context/request/ServletWebRequest;Lorg/springframework/web/method/support/ModelAndViewContainer;[Ljava/lang/Object;)V+4 j org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Lorg/springframework/web/method/HandlerMethod;)Lorg/springframework/web/servlet/ModelAndView;+244 j org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Lorg/springframework/web/method/HandlerMethod;)Lorg/springframework/web/servlet/ModelAndView;+81 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+257 j org.springframework.web.servlet.DispatcherServlet.doService(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+212 j org.springframework.web.servlet.FrameworkServlet.processRequest(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+71 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+33 j javax.servlet.http.HttpServlet.service(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+36 j org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+304 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+135 j org.apache.catalina.core.ApplicationFilterChain.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+101 j org.springframework.web.filter.RequestContextFilter.doFilterInternal(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Ljavax/servlet/FilterChain;)V+21 j org.springframework.web.filter.OncePerRequestFilter.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/FilterChain;)V+147 j org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+135 j org.apache.catalina.core.ApplicationFilterChain.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+101 j org.springframework.web.filter.FormContentFilter.doFilterInternal(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Ljavax/servlet/FilterChain;)V+38 j org.springframework.web.filter.OncePerRequestFilter.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/FilterChain;)V+147 j org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+135 j org.apache.catalina.core.ApplicationFilterChain.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+101 j org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Ljavax/servlet/FilterChain;)V+53 j org.springframework.web.filter.OncePerRequestFilter.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/FilterChain;)V+147 j org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+135 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+694 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+260 j org.apache.catalina.core.StandardHostValve.invoke(Lorg/apache/catalina/connector/Request;Lorg/apache/catalina/connector/Response;)V+114 j org.apache.catalina.valves.ErrorReportValve.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+45 j org.apache.catalina.connector.CoyoteAdapter.service(Lorg/apache/coyote/Request;Lorg/apache/coyote/Response;)V+199 j org.apache.coyote.http11.Http11Processor.service(Lorg/apache/tomcat/util/net/SocketWrapperBase;)Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler$SocketState;+735 j org.apache.coyote.AbstractProcessorLight.process(Lorg/apache/tomcat/util/net/SocketWrapperBase;Lorg/apache/tomcat/util/net/SocketEvent;)Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler$SocketState;+170 j org.apache.coyote.AbstractProtocol$ConnectionHandler.process(Lorg/apache/tomcat/util/net/SocketWrapperBase;Lorg/apache/tomcat/util/net/SocketEvent;)Lorg/apache/tomcat/util/net/AbstractEndpoint$Handler$SocketState;+505 j org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun()V+221 j org.apache.tomcat.util.net.SocketProcessorBase.run()V+21 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` What could be the cause hs_err_pid2069897.log

saudet commented 2 months ago

siginfo: si_signo: 11 (SIGSEGV), si_code: 128 (SI_KERNEL), si_addr: 0x0000000000000000

That means there is a null pointer somewhere that shouldn't be null...