I'm trying to profile an application and having an issue that when it tries to run I get an Ordinal Not Found dialog that says something to the effect of "The ordinal 24840 could not be located in the dynamic link library PUREQRT.DLL". The ordinal number has changed values as I try to instrument it repeatedly, but I always get this error.
I've used earlier versions of Quantify numerous times, and I'm able to instrument another application but this one in particular fails. My setup is:
- Win7 x64
- VisualStudio 2010
- 32 bit executable (release build)
- Quantify (PurifyPlus Suite) version 220.127.116.11-003 32-bit Build 20120410.1500
For the executable I've made sure the settings conform to the expected settings (off the top of my head):
- No whole program optimizations
- Debug symbols generating a PDB (Not edit & continue)
- No incremental linking
- /FIXED:NO specified
- No delay load dlls
If I let it instrument all modules and use the option '-quantify-exclude-must="*"' then it launches fine. If I use the "Selected Modules" option and only instrument my application then it fails with the ordinal error. Also again, it is able to instrument another one of my applications without any issues.
Has anybody experienced this before and found a solution? I love using Quantify to grab performance data (much more so than VTune) but I can't seem to figure out this launch issue.
Re: Quantify error "Ordinal Not Found"2012-09-25T22:47:54ZThis is the accepted answer. This is the accepted answer.Another oddity is that quantify modifies the executable I'm trying to run and for the failed runs (with the Ordinal not found error) it leaves the modified executable on disk. So my 32.5MB executable becomes 142.7MB and stays that way. For my executable that runs without issue it goes from 13.7MB to 72.3 during the run, and once the run is over it goes back to the 16.7MB size.
It may just be that quantify is erroring out before it can revert the executable back to the original image, but I thought I would mention it.
SystemAdmin 110000D4XK2948 Posts
Re: Quantify error "Ordinal Not Found"2012-09-25T23:21:06ZThis is the accepted answer. This is the accepted answer.
- ~~~ 120000GJHT
Just a few thoughts off the top of my head:
1. Hopefully, you're also working with Tech Support on this issue.
Call 1-800-IBM-SERV to open a PMR. (Be sure to have your IBM
Customer Number handy when you call.)
2. Have you tried DELETING all files in your PurifyPlus cache dir
and re-instrumenting everything from scratch? If not, go to
"Default Settings" or "Executable Settings", and click on the
CONFIGURE button on the PowerTune tab. Then, click on the CLEAR
3. Generally, the "Ordinal not found" error would indicate that
different versions of a DLL are being picked up at different
times. The weird thing in THIS case is that the "Ordinal not
found" error is occurring on a Quantify DLL. So, I guess I'd
double-check your PATH and so forth to ensure that only one
version of PUREQRT.DLL can be found. (Did you ever have an
older version of PurifyPlus on this machine???)
4. Does your application link with any Oracle DLLs? I've seen a
similar issue before involving Oracle DLLs. (Not sure why.)
5. As far as your second post is concerned, Quantify will revert
the executable back to its original size when you're doing
"Selective Instrumentation". If you're not using the Selective
Instrumentation option, the instrumented file should be a lot
bigger, but it should be in your cache directory.
Definitely check with Tech Support on this one!
Re: Quantify error "Ordinal Not Found"2012-09-26T00:00:17ZThis is the accepted answer. This is the accepted answer.
- SystemAdmin 110000D4XK
1) I haven't yet. I plan to go the route but I wasn't sure if it was with this or some other s/w that we had to have our licensed point of contact be the one to open the dialog. Of course since that person not me (an admin here) it's like playing a very painful game of telephone. I might be confusing the company so I can't say that it was IBM/Rational that I had that experience with, so I thought I would hit the forums first.
2) Yes. I did it via the UI plus went to the directory and manually deleted all contents of the cache. It would instrument the executable again and cause the same problem.
3) This was one of my first thoughts as I had an older version that was upgraded. The old install was deleted from my machine and a simple check of the Rational dirs shows only 2 versions of that dll: pureqrt.dll and pureqrt64.dll. I do have a complete system scan that is slowly running to verify I don't have some other version hidden away on my machine.
4) It does link to 3rd party DLLs but not Oracle. A fair number of those DLLs are shared between the executable that works and this one that fails. There are some other DLLs that I can't rebuild so if it's one of those causing the issue I may just be out of luck.
5) I'm used to it being in the cache directory as a larger instrumented version, I just found it odd that it modified my source executable and then reverted it back (if it didn't bomb out). I've always seen the cached and instrumented version with the decorated filename, but I don't recall ever seeing it modify the original file location. Not a huge deal but just an observation.
Thanks again, I guess it's time to track down that customer number and start talking to tech support.
Re: Quantify error "Ordinal Not Found"2012-09-27T00:04:13ZThis is the accepted answer. This is the accepted answer.
- ~~~ 120000GJHT
Thanks Don for the help in trying to get this figured out.