Skip to main content

Hi All

We are getting error rts64 : Error 96 encountered in child process while upgrading system from HP to AIX  and  from express cobol 5.1 to Visual Cobol 7.

Please suggest solution

Regards

Hi All

We are getting error rts64 : Error 96 encountered in child process while upgrading system from HP to AIX  and  from express cobol 5.1 to Visual Cobol 7.

Please suggest solution

Regards

I believe that you might have run into the situation when using fork() within your application that is documented here:

There have been changes made in Visual Cobol regarding COBOL calls in parent and child processes.
Extra checking has been put in place to produce the RTS 96 error message when invalid fork() calls are used which could cause unpredictable results.

Although this process could sometimes work in Server Express 5.1, it was not supported by Micro Focus because of these unpredictable results.
The changes introduced in Visual COBOL ensure that unsafe calls are flagged as an error before potentially incorrect results are encountered.

There are no compiler directives or environment variables to overcome this situation, code changes will need to be implemented.

Possible solutions include:

1. Create a new thread instead of a new process. This will require thread synchronization.
Also, an error in any thread will take down all the threads in the process.

2. fork() a child process and then exec() another executable.
This could have a potential performance hit.

3. Have a cache of child processes that are handed work.
After each process has executed its work, it cleans up (eg. cancels COBOL programs) and then waits for more work.

4. Combine 2 and 3 above: Create child processes using fork() and exec(), but then cache/re-use them.

Others who have run into this problem may have more to add here...


I believe that you might have run into the situation when using fork() within your application that is documented here:

There have been changes made in Visual Cobol regarding COBOL calls in parent and child processes.
Extra checking has been put in place to produce the RTS 96 error message when invalid fork() calls are used which could cause unpredictable results.

Although this process could sometimes work in Server Express 5.1, it was not supported by Micro Focus because of these unpredictable results.
The changes introduced in Visual COBOL ensure that unsafe calls are flagged as an error before potentially incorrect results are encountered.

There are no compiler directives or environment variables to overcome this situation, code changes will need to be implemented.

Possible solutions include:

1. Create a new thread instead of a new process. This will require thread synchronization.
Also, an error in any thread will take down all the threads in the process.

2. fork() a child process and then exec() another executable.
This could have a potential performance hit.

3. Have a cache of child processes that are handed work.
After each process has executed its work, it cleans up (eg. cancels COBOL programs) and then waits for more work.

4. Combine 2 and 3 above: Create child processes using fork() and exec(), but then cache/re-use them.

Others who have run into this problem may have more to add here...

Hi Jack,

Did you find a way of avoiding the use of fork()?