0

I have an application which uses the OCI 7 API. This application is successfully deployed on a variety of configurations like

WS2003/Oracle9 and WS2008 R2/Oracle12 (r1). I am now trying to deploy the app on WS2012 R2 but I am facing a frustrating issue where the application crashes with an illegal access somewhere in oranls12.dll. This makes think that it has something to do with the locale and/or system variables. I have checked that the NLS_LANG system variable is set as the same the database uses which is AMERICAN_AMERICA.WE8MSWIN1252.

I have tried using the binary which I know works on WS2008, and I have also compiled it on WS2012. It still crashes. Does anyone know what is wrong, or have any pointers on how to debug this properly?

Any details needed I will provide.

To answer the comments below, the app uses the OCI 7 API, which is still provided with the newer drivers. The app itself is compiled against OCI 12. The database running on the server is Oracle 12.1.0.1.

anders
  • 772
  • 1
  • 10
  • 17
  • OCI 7? I'm afraid nobody can help you unless you provide more details. Best solution would be to open a SR on Metalink. – ibre5041 Nov 19 '15 at 10:07
  • Is there any particular reason you can't use a later OCI release? As far as I know OCI7 has been dead for more than 15 years, and I really hope you're not using Oracle 7.x. – timclutton Nov 19 '15 at 10:07
  • @timclutton OCI7 uses different API. AFAIK the only justification today for using OCI7 is when you to extract file handle id of your TCP connection. This can be helpful for dead connection detection. – ibre5041 Nov 19 '15 at 10:22
  • @timclutton: see edit :) – anders Nov 19 '15 at 10:24
  • @ibre5041: The app works fine on WS2008. This is also compiled against O12. – anders Nov 19 '15 at 10:29
  • and what about OCI 11 client libs? These should be compatible with 12c server. And you do not use any 12c library features anyway. I'm afraid only Oracle can help you in this case - quick searching on Metalink returned only this bug: 17896495. This one mentions oranls12.dll segfaults on windows. – ibre5041 Nov 19 '15 at 10:44
  • [According to Oracle](http://docs.oracle.com/database/121/LNOCI/oci01int.htm#LNOCI16141) OCI7 is deprecated and future releases won't support it (obviously I'm surprised 12c still does!). I appreciate it's rarely a simple task to refactor legacy applications, but it seems like this might be the impetus needed to push that requirement. Sorry I can't be of any more help. – timclutton Nov 19 '15 at 10:57
  • @ibre5041: That bug might be related. I compiled the app with the 12.1.0.2 instant client we now crash somewhere inside oraociei12.dll instead. – anders Nov 19 '15 at 13:21
  • From your statement that you have compiled it, you have the source, compile the source with all the debug info enabled, the run the application using gdb (or similar) then when it crashes, it should be able to give you a backtrace. From there you should be able to debug the problem. – user3629249 Nov 20 '15 at 09:25
  • @user3629249: This is a Windows app. The Oracle libraries aren't to helpful with debug info. There are .sym files packaged with the dll's, but I havent figured out how to use them. – anders Nov 20 '15 at 12:08

0 Answers0