INF: EXEC Problem with the Novell Network 2.x

ID Number: Q32285

4.00 5.00 5.10 6.00 6.00a 6.00ax 7.00

MS-DOS

Summary:

In Microsoft C versions 5.0, 5.1, 6.0, 6.0a, 6.0ax, and C/C++ version

7.0, when compiling a program under a Novell network, the following

problems may occur:

- A command-line error message

- A stack overflow

- A compiler hang

- In programs created with C version 4.0 and LINK version 3.51, the

"Error 2003 : integer divide by zero" error

More Information:

This is not a problem with the Microsoft C Compiler, nor is it an

error on your part. The problem exists in the way Novell networking

software handles the EXEC function, which is one of the MS-DOS

interrupt 21h functions used by the CL and MSC programs to start each

of the compiler passes.

Contact your Novell dealer about this problem; there should be a patch

available. Novell has stated this problem has been corrected in

versions 2.10 and later.

Novell's network emulates MS-DOS; the problem arises from incorrect

emulation of the MS-DOS int 21H function 4BH (EXEC program) call. The

Novell network assumes the calling program will save SS:SP before the

call, which is necessary on MS-DOS versions 2.x. It is not necessary,

however, to save the registers on MS-DOS versions 3.x.

The C compiler checks to see what version of MS-DOS it is running on;

if you are running MS-DOS versions 2.x, save SS:SP; if you are running

MS-DOS versions 3.x (which is what Novell presents itself as) do not

save SS:SP. The network destroys those registers on the call even

though this behavior is unlike MS-DOS versions 3.x.

Additional reference words: 6.0 6.00 6.0a 6.00a 6.0ax 6.00ax 7.00