Also look at the TODO file

external tools and drivers we use:

gcc 2.95  Can't do our assembler inline due to statemens beeing to long, and
    having to many arguments.

gcc 2.96 (redhat smashed together 2.95 + 3.0 patchset)
    Nope.. can't do assembler good enough.. fails to compile

gcc 3.3.3: When using -O2 or higher it used to crash cpiface/cpiphase.c. So we
    waste 256*4 more bytes of stack there, just when we are compiler with you
    3.3.3 :-)
    Update.. We always waste more memory now. The problem source is aliasing.

gcc 4.x: If other libraries are compiled with 4.x and ocp with 3.x you might get
    some random crashes in c++ code due to internal ABI changes in g++.

make 3.79.1:
    Has some serious faults.. Sometimes it failes to locate files, forget flags
    and shit like that.

glibc 2.3 and the linuxthread library is not compatible with Eletric Fence when
    timer is used. define NO_BACKGROUND_MIXER if you intend to use efence

ncurses-5.2-26: (on redhat 7.3 for instance)
    Has some drawing bugs when drawing spaces, it sometimes failes to detect
    overwritten data.. Couses sometimes unwanted text on places you wanted it
    to change to blank. (See fixbadgraphic in ocp.ini and stuff/poutput-curses.c)
    (Of course curses will mess up if you don't redirect stderr currently, but
    this bug makes even more noise on the console, and it still has bugs when
    making very big terminals)
    Sometimes keycodes like esc[H becomes escOH .. Workaround is always compiled
    in

nforce audio, binary drivers from nvidia: Returns negative ODELAY, bugfix always
    active.

via82cxxx_audio/kernel 2.4.25-rc1: sometimes give ODELAY bigger than what you
    have actually written. Workarounds are always compiled in (devposs)

2.4.26-rc1: some devices that is not present like /dev/sg0 makes funny results
    in the following cases:  /dev/sg0 is not present. /dev/sga is a symlink to
    /dev/sg0. (stat("/dev/sga", &st)) then failes with ENOENT, while
    stat("/dev/sg0", &st) works perfect and lstat("/dev/sga")

tridentfb/kernel 2.4.26-rc: (and possible other versions)
    tridentfb has some funny bugs. The default palette you read from the driver
    is not the real one since the bits are shifted wrong.

    tridentfb reports linelength wrong after you have changed resolution.
    Reopen the framebuffer is not enough. You need a new process-space to
    update the values.

XFree86-4.3.0: (matrox driver atleast)
    * Keyboard state is as broken as it can be, so there is an option in
      ocp.ini to trace shiftmask by hand, and not trust XEvent
    * It leaves a /dev/mem filedescriptor open across exec calls


And from this software:

MINOR FUCKUPS:

playxm/* has some bugs on some few files (samples broken):
 adamski.mod: monty pole
 almost.mod: almost
         and these have buggy global commands
  barbarian.mod: bar-barian (we have disables tempo=0 as "end" command for now)

long pauses causes idiv to give segfault due to overflow (#PE) when unpaused.
Needs a range check when I bother to make it.
