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

2019-03-31 00:30发布

I want to know what ORA-24550: signal received: [si_signo=6] means?

I know this is an oracle error and may an oracle latest patch can solve the issue.

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.

3条回答
做个烂人
2楼-- · 2019-03-31 00:38

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.

查看更多
Animai°情兽
3楼-- · 2019-03-31 00:43

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:

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 size limited 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.

查看更多
何必那么认真
4楼-- · 2019-03-31 00:54

This is a sign that your Oracle client has received a signal it wasn't expecting. The Oracle docs say:

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.

By default, Oracle registers its own signal handlers, but you can configure it to let signals propagate instead.

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:

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

We can see you're getting SIGABRT. This usually means something is calling abort().

查看更多
登录 后发表回答