- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
We build executables from libraries that contain most of the routines that we use and main program that might contain a few subroutines. Our libraries are built with IVF 9.0. The libraries do contain mixed langauge routines as we have quite a few C routines that are used in the code. The executables might be built using any version of the compiler upto and including 11.1. But we find that some of our models won't run when compiled with 11.1 They same libraries and main program work fine using 11.0 and earlier versions of the compiler.The executables seem to go into an infinite loop in some models when using 11.1 (there are some that run fine, but anything less than 100% of them isn't acceptable).The process has to be terminated using the task manager. Then I find that there is a traceback where the codehas died during a deallocation. It doesn't happen in every instance. But test models that have run for years, won't run when compiled and linked with 11.1. We find even compiling the libraries with 11.0 and then compiling the main routine and linking with 11.1 results in the infinite loop. Are there any known reasons for this? I read all the release notes and couldn't find anything that would suggest 9.0 libraries should have incompatabilities. Any suggestions as to how to figure out why these models get stuck when using 11.1?
Dave
Dave
Link Copied
3 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I can't think of anything related to different versions that would be a problem. We support linking in older objects with newer, as long as you use the newest linker and Intel libraries. It could be that 11.1 has a bug or that your code has a bug that was not exposed using the earlier compilers. If you can provide us a test case, we'll be glad to investigate.
If you wanted to try to diagnose this yourself, I'd look for possibilities of data corruption. Build all the Fortran sources with a Debug configuration in 11.1. Make sure that you aren't incorrectly using STDCALL calling conventions when C should be used.
If you wanted to try to diagnose this yourself, I'd look for possibilities of data corruption. Build all the Fortran sources with a Debug configuration in 11.1. Make sure that you aren't incorrectly using STDCALL calling conventions when C should be used.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It appears to always crash on a deallocation. Here is the code:
if( allocated(dworks)) THEN
deallocate(dworks,stat=alocerr)
ELSE
write(linout,*)' dworks not allocated - no deallocation'
call outlog(linout)
ENDIF
if( allocated(dworks)) THEN
deallocate(dworks,stat=alocerr)
ELSE
write(linout,*)' dworks not allocated - no deallocation'
call outlog(linout)
ENDIF
It gives an access violation error.
It is interesting, but maybe not relevant. I look in the .map file produced. There are a number of common block names that appear in other compiler versions that are missing when using 11.1. Any reason the map wouldn't list them just like the other versions?
Dave
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Memory corruption seems a likely candidate for you. As for common block names, no idea. Got an example?
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page