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.
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()
.
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.
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.