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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-10 05:35:54  来源:igfitidea点击:

ORA-24550: signal received: [si_signo=6] error

oraclesignals

提问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=6means 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,这不是一件好事,因为我正在处理关键事务处理系统。