I found a problem maybe a bug about the OCITransCommit when I was testing the high availability of my application on Linux.
First I started my application, it would do some database manipulation. Then I shuted down the oracle server. Then there was a chance the application would hang.
The function stack showed the application was running the OCITransCommit function, and OCITransCommit could never return in couple of hours.
Can any guys tell me what OCITransCommit function is doing and why it could not return. Need your help.
#0 0x00007faf3ff5be8d in read () from /lib64/libpthread.so.0
#1 0x00007faf428e6060 in snttread () from /home/oracle/app/oracle/product/12.1.0/client_1//lib/libclntsh.so.12.1
#2 0x00007faf428e54f5 in nttfprd () from /home/oracle/app/oracle/product/12.1.0/client_1//lib/libclntsh.so.12.1
#3 0x00007faf428dabb5 in nsbasic_brc () from /home/oracle/app/oracle/product/12.1.0/client_1//lib/libclntsh.so.12.1
#4 0x00007faf428da9b6 in nsbrecv () from /home/oracle/app/oracle/product/12.1.0/client_1//lib/libclntsh.so.12.1
#5 0x00007faf428d0a4e in nioqrc () from /home/oracle/app/oracle/product/12.1.0/client_1//lib/libclntsh.so.12.1
#6 0x00007faf428e662d in ttcdrv () from /home/oracle/app/oracle/product/12.1.0/client_1//lib/libclntsh.so.12.1
#7 0x00007faf428d5559 in nioqwa () from /home/oracle/app/oracle/product/12.1.0/client_1//lib/libclntsh.so.12.1
#8 0x00007faf428b765c in upirtrc () from /home/oracle/app/oracle/product/12.1.0/client_1//lib/libclntsh.so.12.1
#9 0x00007faf40ad0961 in upirtr () from /home/oracle/app/oracle/product/12.1.0/client_1//lib/libclntsh.so.12.1
#10 0x00007faf40aa5798 in kputxcmt () from /home/oracle/app/oracle/product/12.1.0/client_1//lib/libclntsh.so.12.1
#11 0x00007faf40ad52bb in OCITransCommit () from /home/oracle/app/oracle/product/12.1.0/client_1//lib/libclntsh.so.12.1