oracle ORA-24550: 收到信号: [si_signo=6] 错误
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/22955099/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
ORA-24550: signal received: [si_signo=6] error
提问by sruthy
I want to know what ORA-24550: signal received: [si_signo=6] means?
我想知道 ORA-24550: signal received: [si_signo=6] 是什么意思?
I know this is an oracle error and may an oracle latest patch can solve the issue.
我知道这是一个 oracle 错误,也许 oracle 最新补丁可以解决这个问题。
When this error is triggered, like the scenario where this signal has to be handled or whether this error occur when my application has to handle something related to oracle and the application failed to do that.
触发此错误时,例如必须处理此信号的场景,或者当我的应用程序必须处理与 oracle 相关的某些内容而应用程序未能执行此操作时是否会发生此错误。
回答by Wilfred Hughes
This is a sign that your Oracle client has received a signal it wasn't expecting. The Oracle docssay:
这是一个迹象,表明您的 Oracle 客户端收到了一个它没有预料到的信号。在甲骨文的文档说:
ORA-24550: unhandled signal #number received. string
Cause: Serious error: signal received
Action: Refer to the platform-specific signal code, and see if the application code caused the error. Otherwise, record all error state and notify Oracle Support Services.
ORA-24550: 收到未处理的信号 #number。细绳
原因:严重错误:收到信号
行动:参考特定于平台的信号代码,并查看应用程序代码是否导致错误。否则,记录所有错误状态并通知 Oracle 支持服务。
By default, Oracle registers its own signal handlers, but you can configure it to let signals propagate instead.
默认情况下,Oracle 注册自己的信号处理程序,但您可以将其配置为让信号传播。
You will generally see a log line like this:
您通常会看到这样的日志行:
ORA-24550: signal received: [si_signo=6] [si_errno=0] [si_code=1] [si_int=597680428] [si_ptr=0x239fe290] [si_addr=0x3f445c43c0]
and you may see a traceback too.
你也可能会看到回溯。
To debug, you need to find out what is producing this signal. si_signo=6
means that you're getting signal 6. We can find out which signal this is with $ man 7 signal
:
要进行调试,您需要找出产生此信号的原因。si_signo=6
意味着你得到了信号 6。我们可以找出这是哪个信号$ man 7 signal
:
Standard Signals
Signal Value Action Comment ------------------------------------------------------------------------- SIGHUP 1 Term Hangup detected on controlling terminal or death of controlling process SIGINT 2 Term Interrupt from keyboard SIGQUIT 3 Core Quit from keyboard SIGILL 4 Core Illegal Instruction SIGABRT 6 Core Abort signal from abort(3) SIGFPE 8 Core Floating point exception SIGKILL 9 Term Kill signal SIGSEGV 11 Core Invalid memory reference SIGPIPE 13 Term Broken pipe: write to pipe with no readers SIGALRM 14 Term Timer signal from alarm(2) SIGTERM 15 Term Termination signal
标准信号
Signal Value Action Comment ------------------------------------------------------------------------- SIGHUP 1 Term Hangup detected on controlling terminal or death of controlling process SIGINT 2 Term Interrupt from keyboard SIGQUIT 3 Core Quit from keyboard SIGILL 4 Core Illegal Instruction SIGABRT 6 Core Abort signal from abort(3) SIGFPE 8 Core Floating point exception SIGKILL 9 Term Kill signal SIGSEGV 11 Core Invalid memory reference SIGPIPE 13 Term Broken pipe: write to pipe with no readers SIGALRM 14 Term Timer signal from alarm(2) SIGTERM 15 Term Termination signal
We can see you're getting SIGABRT
. This usually means something is calling abort()
.
我们可以看到你得到了SIGABRT
。这通常意味着有什么东西在调用abort()
。
回答by darkstar_mx
I had a similar error, but I obtained the si_signo=11(Invalid memory reference according to previous comment), in my case I was working on Red Hat 6.5 and my Oracle DB was in a different server, the problem was local to my Red Hat server, here the error:
我有一个类似的错误,但我获得了si_signo=11(根据之前的评论无效的内存引用),在我的情况下,我正在使用 Red Hat 6.5,而我的 Oracle DB 在不同的服务器上,问题出在我的 Red 本地帽子服务器,这里是错误:
ORA-24550: signal received: [si_signo=11] [si_errno=0] [si_code=1] [si_int=1147687784] [si_ptr=0x7f8f44685368] [si_addr=0x7f8f1c001000]
In my case the fix was very simple, I had a stack sizelimited amount, temporary solution was to change it to unlimited
在我的情况下,修复非常简单,我的堆栈大小有限,临时解决方案是将其更改为无限制
$ ulimit -s unlimited
Then I retried to launch my application, the problem was gone. This solution, indeed, made me understand I had to set a higher value for the stack size index, please consider increasing the value but not using unlimited because it's not a good practice, it might take down the server or create performance issues.
然后我重试启动我的应用程序,问题消失了。这个解决方案确实让我明白我必须为堆栈大小索引设置更高的值,请考虑增加该值但不要使用无限制,因为这不是一个好的做法,它可能会关闭服务器或产生性能问题。
回答by shinberg
Oracle sets its own signal handlers, so this error may be due to unhandled sigabort signal. You can disable oracle signal handling to find out if this error is provided by oracle, or there is completely another reason. To disable you set DIAG_SIGHANDLER_ENABLED=FALSE in sqlnet.ora file. I don't think that the reason is oracle itself.
Oracle 设置了自己的信号处理程序,因此此错误可能是由于未处理的 sigabort 信号造成的。您可以禁用 oracle 信号处理以查明此错误是否由 oracle 提供,或者完全有其他原因。要禁用您在 sqlnet.ora 文件中设置 DIAG_SIGHANDLER_ENABLED=FALSE。我不认为原因是oracle本身。
回答by Shujaat Bukhari
In my case it was the issue of mismatch of TLS version but still it shouldn't be restarting the .exe file so I figured out the handling was not proper in soap which caused the .exe to crash
在我的情况下,这是 TLS 版本不匹配的问题,但它仍然不应该重新启动 .exe 文件,所以我发现soap中的处理不正确导致 .exe 崩溃
return soap_set_receiver_error(soap, soap_ssl_error(soap, r), "SSL/TLS handshake failed", SOAP_SSL_ERROR);
返回soap_set_receiver_error(soap, soap_ssl_error(soap, r), "SSL/TLS 握手失败", SOAP_SSL_ERROR);
where rwasn't initialized so it caused crashing of .exe file
其中r未初始化,因此导致 .exe 文件崩溃
Any typo in the https link could restart the .exe which wasn't the good thing as I was working on critical transaction processing systems.
https 链接中的任何错字都可能重新启动 .exe,这不是一件好事,因为我正在处理关键事务处理系统。