System error when compiling a quite complex subroutine

System error when compiling a quite complex subroutine

Dear colleagues,

Several months ago I had successfully developed a user subroutine in FORTRAN for a particular commercial finite element software (ABAQUS). I decided several days ago to extend this subroutine and the resulting subroutine is quite complex, big, and involves several big matrices/arrays (over 10 thousand lines) that are exchanged among subroutines with COMMON BLOCKS.

The thing is that the subroutine does not compile and I get the following error:

Abaqus Error: The executable standard.exe aborted with system error code 1073741819. 

There is no other information in any other file. It is important to note that this kind of error could be due to many reasons and is different than the error that appears as a consequence of poor programming. However, I thought that maybe I had define wrongly some of the variables of the code: I thoroughly checked all the code and tried to locate the error. My surprise came when I saw that, reducing the number of lines of the big matrices/arrays mentioned before, the subroutine works. Those matrices/arrays are all of them initialized (the suppressed lines only contain 0s) and I have checked that its dimensions agree through all the code. Searching on the internet I see that some people with similar problems say that it could be due to memory problems. Could it be? What could I do to solve it?

I know that usually, in the 95% of the cases, when subroutines don't work this is due to poor programming. However, in this case there are several circumstances that make me think that it could be to other reasons. Among them, if I add to the subroutine the following statement WRITE, the above mentioned error appears again, independently of the variable (A or other).

WRITE(7,*) 'A equals:', A 

(Note that in this statement the number 7 indicates that the message is written to a particular file of the FE software).

Searching on the internet I have also found this nice post by Steve Lionel:

https://software.intel.com/en-us/articles/memory-limits-applications-win...

I wonder if it is my case and if I can do anything to solve the problem, since I use quite a lot of static code but unfortunately I am not able to reduce it due to the limitations of not having access to the main code.

Thank you very much for your help

9 Beiträge / 0 neu
Letzter Beitrag
Nähere Informationen zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.

That is an abaqus error message. If you compile the routine from the Intel Fortran  command line what messages do you get. These will probably me more informative if it is indeed a compile error.

.

There are several steps which are know doubt done by aqaqus. It will compile the Fortran file using Intel Fortran to produce a .obj file and then it will link the .obj file with some other aqabus code to produce a program that will run. I see know reason why you cannot compile the Fortran as a stand alone to see what happens and what errors (if any) are produced. 

This is a Fortran forum and you will get Fortran help here. For Abaqus help I am sure there are other more relevant  forums.

My apologies app4619, I did not understand your previous message.

I have compiled the Fortran file as a stand alone, obtaining the .obj file and I did not get any error messages. 

My question is regarding this memory limits and how can I increase them.

Thanks a lot for your help

Reading your initial post it looks like the exe built and then had a run time error. That could be bugs in your Fortran code, there is nothing much to go on as there is no code posted. What is the size and type of the arrays you declare and are you creating 32 or 64 bit code?

Best Reply

A Google search related to 1073741819 suggests to me that it is actually -1073741819 which is c0000005 in hexadecimal, and this is the code for an access violation. It is impossible to know from this what triggered the problem, but it is unlikely to be memory limits

The program that got the error was an Abaqus program. Perhaps the Abaqus support people can give you advice on how to further diagnose this.

Steve

In the light of Steve's comments in #7, I think that the title of the thread, "... error when compiling.." and the following statement in the original post are incorrect and misleading.

"The thing is that the subroutine does not compile and I get the following error: Abaqus Error: The executable standard.exe aborted with system error code 1073741819."

I understand that Abaqus uses a configuration file to compile and link DLLs, which it then calls, but nowhere is there any evidence that there was an error while compiling. These mistakes, in combination with the attempt to lead us on a chase after "memory problems", make it very unlikely that we can offer useful advice about correcting the user's code. Allow me to suggest a three-stage strategy:

  • Step 1: Write dummy subroutines that are to be called by Abaqus. In these, merely output the values of all the subroutine's input arguments into a file and exit.
  • Step 2: Write and debug a stand-alone program (i.e., independent of Abaqus) to read the file written in Step 1 and call the subroutine to perform the calculations that Abaqus expects.
  • Step 3: Strip off the main program used in Step 2, and use the by-now-debugged subroutine with Abaqus.

Dear friends

Thank you very much for your help. 

@mecej4 is right. The title of the thread is inappropriate and the error is probably due to a programming error. However, I am not able to delete this thread, if you can do it for me do not hesitate.

I am afraid that your three-stage strategy will not work on this case, since the subroutine's input arguments will be equal to zero on the first call and on successive calls they will depend on the code inside of the subroutine. However, if memory issues are discarded, I will thoroughly check my code.

Thank you

Melden Sie sich an, um einen Kommentar zu hinterlassen.