sqlplus crashes receiving INT signal (only for 11.2.0 release database server)

José García Juanino jjuanino at gmail.com
Thu Mar 29 19:19:09 UTC 2012


Hi,

I am running FreeBSD 9.0-RELEASE. My company has several Oracle
Database servers. At this
moment, we are using 11.2.0 on Sun Solaris.

After start sqlplus oracle client and doing a CONTROL+C, client
connection crashes:

$ uname
FreeBSD
$ sqlplus /nolog
SQL> connect user/password at database11_2_0
Connected.
SQL> [Hit CONTROL+C to send INT signal to sqlplus]
(At this point, sockstat -c4 -p 1521 shows a socket between my host
and the oracle server)
SQL> select 1 from dual;
select 1 from dual
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel


ERROR:
ORA-03114: not connected to ORACLE
(At this point, the previous socket has gone out)


The ktrace - linux_kdump shows:


       "SQL> "
 29849 sqlplus  RET   write 5
 29849 sqlplus  CALL  linux_fstat64(0,0xbfbf8d3c,0x34ee4ff4)
 29849 sqlplus  UNKNOWN(8)   29849 sqlplus  RET   linux_fstat64 0
 29849 sqlplus  CALL  linux_mmap2(0,0x1000,0x3,0x22,0xffffffff,0)
 29849 sqlplus  RET   linux_mmap2 886091776/0x34d0b000
 29849 sqlplus  CALL  read(0,0x34d0b000,0x1000)
 29849 sqlplus  RET   read RESTART
 29849 sqlplus  PSIG  SIGINT caught handler=0x347fec2c mask=0x0 code=0x0
 29849 sqlplus  CALL  linux_rt_sigprocmask(0,0xbfbf8bec,0,0x8)
 29849 sqlplus  RET   linux_rt_sigprocmask 0
 29849 sqlplus  CALL  linux_rt_sigprocmask(0x1,0xbfbf8bec,0,0x8)
 29849 sqlplus  RET   linux_rt_sigprocmask 0
 29849 sqlplus  CALL  linux_rt_sigreturn(0xbfbf8d50)
 29849 sqlplus  RET   linux_rt_sigreturn JUSTRETURN
 29849 sqlplus  CALL  read(0,0x34d0b000,0x1000)
 29849 sqlplus  GIO   fd 0 read 1 byte
       "
       "
 29849 sqlplus  RET   read 1
 29849 sqlplus  CALL  write(0x1,0x34d0a000,0x1)
 29849 sqlplus  GIO   fd 1 wrote 1 byte
       "
       "
 29849 sqlplus  RET   write 1
 29849 sqlplus  CALL  write(0x1,0x34d0a000,0x5)
 29849 sqlplus  GIO   fd 1 wrote 5 bytes
       "SQL> "
 29849 sqlplus  RET   write 5
 29849 sqlplus  CALL  read(0,0x34d0b000,0x1000)
 29849 sqlplus  GIO   fd 0 read 26 bytes
       "select 1 from dual;
       "
 29849 sqlplus  RET   read 26/0x1a
 29849 sqlplus  CALL  gettimeofday(0xbfbfae44,0)
 29849 sqlplus  RET   gettimeofday 0
 29849 sqlplus  CALL  linux_socketcall(0x9,0xbfbf5b00)
 29849 sqlplus  GIO   fd 4 wrote 1 byte
       "!"
 29849 sqlplus  RET   linux_socketcall 1
 29849 sqlplus  CALL  write(0x4,0xbfbf5d00,0xb)
 29849 sqlplus  GIO   fd 4 wrote 11 bytes
       "\0\v\0\0\f\0\0\0\^A\0\^B"
 29849 sqlplus  RET   write 11/0xb
 29849 sqlplus  CALL  read(0x4,0x80caf7e,0x810)
 29849 sqlplus  GIO   fd 4 read 10 bytes
       "\0
        \0\0\^F\0\0\0\0@"
 29849 sqlplus  RET   read 10/0xa
 29849 sqlplus  CALL  linux_socketcall(0xe,0xbfbf64b4)
 29849 sqlplus  RET   linux_socketcall 0
 29849 sqlplus  CALL  linux_socketcall(0xe,0xbfbf64b4)
 29849 sqlplus  RET   linux_socketcall 0
 29849 sqlplus  CALL  close(0x4)
 29849 sqlplus  RET   close 0
 29849 sqlplus  CALL  close(0x3)
 29849 sqlplus  RET   close 0
 29849 sqlplus  CALL  linux_fcntl64(0x80bdcb0,0x2,0x1)
 29849 sqlplus  RET   linux_fcntl64 -1 errno 9 Bad file descriptor
 29849 sqlplus  CALL  write(0x1,0x34d0a000,0x19)
 29849 sqlplus  GIO   fd 1 wrote 25 bytes
       "select 1 from dual
       "
 29849 sqlplus  RET   write 25/0x19
 29849 sqlplus  CALL  write(0x1,0x34d0a000,0x2)
 29849 sqlplus  GIO   fd 1 wrote 2 bytes
       "*
       "
 29849 sqlplus  RET   write 2
 29849 sqlplus  CALL  write(0x1,0x34d0a000,0x11)
 29849 sqlplus  GIO   fd 1 wrote 17 bytes
       "ERROR at line 1:
       "
 29849 sqlplus  RET   write 17/0x11
 29849 sqlplus  CALL  write(0x1,0x34d0a000,0x30)
 29849 sqlplus  CALL  write(0x1,0x34d0a000,0x30)
 29849 sqlplus  GIO   fd 1 wrote 48 bytes
       "ORA-03113: end-of-file on communication channel


The same issue happens with oracle linux instantclient 10.2.0.5 and
11.2.0.3, but it does *not*
arise when oracle database server version is 10.2.0. Here you can see
a similar ktrace-linux_kdump,
but with a Oracle Database Server version = 10.2.0:

       "SQL> "
 30272 sqlplus  RET   write 5
 30272 sqlplus  CALL  linux_fstat64(0,0xbfbf8d3c,0x34ee4ff4)
 30272 sqlplus  UNKNOWN(8)   30272 sqlplus  RET   linux_fstat64 0
 30272 sqlplus  CALL  linux_mmap2(0,0x1000,0x3,0x22,0xffffffff,0)
 30272 sqlplus  RET   linux_mmap2 886091776/0x34d0b000
 30272 sqlplus  CALL  read(0,0x34d0b000,0x1000)
 30272 sqlplus  RET   read RESTART
 30272 sqlplus  PSIG  SIGINT caught handler=0x347fec2c mask=0x0 code=0x0
 30272 sqlplus  CALL  linux_rt_sigprocmask(0,0xbfbf8bec,0,0x8)
 30272 sqlplus  RET   linux_rt_sigprocmask 0
 30272 sqlplus  CALL  linux_rt_sigprocmask(0x1,0xbfbf8bec,0,0x8)
 30272 sqlplus  RET   linux_rt_sigprocmask 0
 30272 sqlplus  CALL  linux_rt_sigreturn(0xbfbf8d50)
 30272 sqlplus  RET   linux_rt_sigreturn JUSTRETURN
 30272 sqlplus  CALL  read(0,0x34d0b000,0x1000)
 30272 sqlplus  GIO   fd 0 read 1 byte
       "
       "
 30272 sqlplus  RET   read 1
 30272 sqlplus  CALL  write(0x1,0x34d0a000,0x1)
 30272 sqlplus  GIO   fd 1 wrote 1 byte
       "
       "
 30272 sqlplus  RET   write 1
 30272 sqlplus  CALL  write(0x1,0x34d0a000,0x5)
 30272 sqlplus  GIO   fd 1 wrote 5 bytes
       "SQL> "
 30272 sqlplus  RET   write 5
 30272 sqlplus  CALL  read(0,0x34d0b000,0x1000)
 30272 sqlplus  GIO   fd 0 read 20 bytes
       "select 1 from dual;
       "
 30272 sqlplus  RET   read 20/0x14
 30272 sqlplus  CALL  gettimeofday(0xbfbfae44,0)
 30272 sqlplus  RET   gettimeofday 0
 30272 sqlplus  CALL  linux_socketcall(0x9,0xbfbf5b00)
 30272 sqlplus  GIO   fd 4 wrote 1 byte
       "!"
 30289 sqlplus  RET   linux_socketcall 1
 30289 sqlplus  CALL  write(0x4,0xbfbf5d00,0xb)
 30289 sqlplus  GIO   fd 4 wrote 11 bytes
       "\0\v\0\0\f\0\0\0\^A\0\^B"
 30289 sqlplus  RET   write 11/0xb
 30289 sqlplus  CALL  read(0x4,0x80ca796,0x810)
 30289 sqlplus  GIO   fd 4 read 11 bytes
       "\0\v\0\0\f\0\0\0\^A\0\^B"
 30289 sqlplus  RET   read 11/0xb
 30289 sqlplus  CALL  read(0x4,0x80c83e6,0x810)
 30289 sqlplus  GIO   fd 4 read 101 bytes
       "\0e\0\0\^F\0\0\0\0\0\^D\^A\^A\^A\^X\^A\^A\^B\^Cõ\0\0\^A\^C\0/\0\0\0\0\
        \0\0\0\0\0\0\0\0\^Z\0\^A\^A\0\0\0\0006ORA-01013: user requested cancel\
         of current operation
       "
 30289 sqlplus  RET   read 101/0x65
 30289 sqlplus  CALL  write(0x4,0x80c8c06,0x55)
 30289 sqlplus  GIO   fd 4 wrote 85 bytes
       "\0U\0\0\^F\0\0\0\0\0\^Qi\^[\^A\^A\^B\^A\^A\^A\^C\^C^\^\\^B\M^@a\0\^A\
        \^A\^R\^A\^A\r\0\^A\0\^A\^A\0\0\0\0\0\0\0\^A\^A\0\0\0\^A\^Rselect 1 fr\
        om dual\^A\^A\0\0\0\0\0\0\^A\^A\0\0\0\0\0"
 30289 sqlplus  RET   write 85/0x55
 30289 sqlplus  CALL  read(0x4,0x80ca796,0x810)
 30289 sqlplus  GIO   fd 4 read 147 bytes
       "\0\M^S\0\0\^F\0\0\0\0\0\^P\^W}MÉ´#ð¼ûQ\^Bríªà\M^VÈxp\^C\^]\^V\^B\^C\^A\
        \^B\^A\^AM\^B\0\0\0\^A\^B\0\0\0\0\0\0\0\^A\^A\^A\^A\^A1\0\0\0\^A\a\axp\
        \^C\^]\^V\^R\^B\^A\^A\^B\^_è\^A\^B\^A\^B\^F\^B\^A\^A\0\^A\^A\0\0\0\a\
        \^BÁ\^B\b\^A\^F\^DÙE\^V"\^A\^B\^A\^A\0\0\0\0\0\0\^D\^A\^A\^A\^Z\^A\^A\
        \0\0\0\^A\^A\0\^C\0\0\0\0\0\0\0\0\0\0\0\0\^\\0\^A\^A\0\0\0\0"
 30289 sqlplus  RET   read 147/0x93
 30289 sqlplus  CALL  write(0x4,0x80c8c06,0x11)
 30289 sqlplus  GIO   fd 4 wrote 17 bytes
       "\0\^Q\0\0\^F\0\0\0\0\0\^C\^E\^]\^A\^A\^A\^O"
 30289 sqlplus  RET   write 17/0x11
 30289 sqlplus  CALL  read(0x4,0x80c83e6,0x810)
 30289 sqlplus  GIO   fd 4 read 72 bytes
       "\0H\0\0\^F\0\0\0\0\0\^D\^A\^A\^A\^[\^A\^A\^B\^E{\0\0\^A\^A\0\^C\0\0\0\
        \0\0\0\0\0\0\0\0\0\^]\0\^A\^A\0\0\0\0\^YORA-01403: no data found
       "
 30289 sqlplus  RET   read 72/0x48
 30289 sqlplus  CALL  write(0x1,0x34d0a000,0x1)
 30289 sqlplus  GIO   fd 1 wrote 1 byte
       "
       "
 30289 sqlplus  RET   write 1
 30289 sqlplus  CALL  write(0x1,0x34d0a000,0x4)
 30289 sqlplus  GIO   fd 1 wrote 4 bytes
       "         1
       "
 30289 sqlplus  RET   write 4
 30289 sqlplus  CALL  write(0x1,0x34d0a000,0xb)
 30289 sqlplus  GIO   fd 1 wrote 11 bytes


Any advice will be appreciated, and sorry for my poor english.


Please keep me in Cc: as I am not subscribed to the list.

Best regards


More information about the freebsd-emulation mailing list