[an error occurred while processing this directive] Node:OS2, Next:, Previous:Minimum, Up:Requirements

3.2 Does it really work under OS/2?

Q: You tell me it will work under OS/2, but I'm experiencing strange crashes after several compilations ....

Q: DJGPP Make crashes when I run it on OS/2!

Q: When I press Ctrl-<C>, my program is aborted, even though I've set up a handler for SIGINT!

A: There was a bug in the DPMI server of the old OS/2 versions, which was triggered by spawning child processes (like GCC does when it invokes the various compiler passes). Current versions of OS/2 don't have that bug, so DJGPP programs should run fine under OS/2. If you can't make this happen, chances are that your setup is incorrect. One system parameter that can cause problems with DJGPP (reportedly, Make crashes if it isn't set correctly) is DPMI_DOS_API. Setting it to ENABLED instead of the default AUTO should solve the problem. I'm also told that experimenting with the value of DPMI_MEMORY_LIMIT sometimes solves problems on OS/2. Reportedly, version 4.0 of OS/2 solves problems with DPMI support, so the above is only required for OS/2 v3.0 or earlier.

One particular problem with OS/2 v3.0 is that RHIDE 1.4 and later exits after the compilation ends. This doesn't happen under OS/2 v4.0, so you should upgrade if you have such problems.

Problems with SIGINT are due to a known bug in OS/2 VDM: when you press Ctrl-<C>, VDM catches it ahead of the keyboard interrupt handler installed by the DJGPP startup code, and aborts the program. Thus, you cannot prevent your programs from being aborted by installing a SIGINT handler.

Programs that use the library function delay hang if the <Pause> key is pressed while inside the call to delay. It is possible that versions of OS/2 4.0 fixpack 13 or later will correct this. As a work-around, use usleep or write a loop which calls uclock.


[an error occurred while processing this directive]